![]() |
Re: Mausklick simulieren funktioniert nicht
Zitat:
Irgendwas stimmt also mit meinem Code nicht, vielleicht kann mir jemand weiterhelfen. Fakt ist: Der andere Button bekommt zwar den Focus (gestrichelte Umrandung), aber einzig der Ausgangsbutton von dem die procedure ausgeht flackert (gedrückt, nicht gedrückt etc)
Delphi-Quellcode:
var wnd: HWND;
begin wnd := FindWindow('TForm1','Form1'); wnd := FindWindowEx2(wnd,'TButton', 8); // wnd := FindWindow('#32770','ZoneAlarm-Sicherheitswarnung'); // wnd := FindWindowEx2(wnd,'ZaButton', 3); if wnd <> 0 then begin SendMessage(wnd, WM_SETFOCUS, 0, 0); end; keybd_event(VK_SPACE, 0, 0, 0); keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0); |
Re: Mausklick simulieren funktioniert nicht
|
Re: Mausklick simulieren funktioniert nicht
Zitat:
Ich habs mal manuell getestet, also WM_SETFOCUS ist nicht das richtige, es setzt war einen Focus aufs neue Handle, aber nimmt ihn vom alten nicht weg. kennt jemand den korrekten WM befehl der wirklich auch die Tastatur aufs neue Handle setzt? |
Re: Mausklick simulieren funktioniert nicht
Wenn der Focus auf die Taste gesetzt ist, müsste doch mit der Taste ENTER also vk_Return diese ausgeführt werden. Hast du schon mal die Tastenkombination ALT + L versucht?
|
Re: Mausklick simulieren funktioniert nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
habe mal einen screenshot angehangen auf dem man das problem sieht, beide buttons haben focus |
Re: Mausklick simulieren funktioniert nicht
So Leute ich kann einen ersten Erfolg vermelden!
Aktueller Code:
Delphi-Quellcode:
Also wenn ich das Fenster fokussiere springt der Fokus zunächst auf einen Info Button, dann auf eine Checkbox
procedure TForm1.Timer1Timer(Sender: TObject);
var wnd,wnd1,: HWND; begin wnd := FindWindow('#32770','ZoneAlarm-Sicherheitswarnung'); if wnd <> 0 then begin form1.caption:='Window found. Handle: ' + IntToStr(wnd); SetForegroundWindow(wnd); SendMessage(wnd, WM_SETFOCUS, 0, 0); keybd_event(VK_TAB, 0, 0, 0); keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_TAB, 0, 0, 0); keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_SPACE, 0, 0, 0); keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0); end; end; "Regel immer anwenden" und dann auf Zulassen. Mit Space kann ich diese nun klicken und die Anwendung wird zugelassen. Nun habe ich jedoch noch 2 Probleme: 1.) Ich kann die Checkbox "Regel immer anwenden" nicht aktivieren wenn ich nach dem ersten tab noch ein space einfüge, obwohl ich so zulassen "klicken" kann. Manuell per Tastatur geht es jedoch! 2.) Wenn ich das ganze in einen Timer tue wird zwar bei jeder ZA Sicherheitsanfrage automatisch "Zulassen" angeklickt, jedoch hängt das komplette System danach weil er das Fenster irgendwie nichtmehr loslassen will. Ich muss dann im passenden Moment auf Alt+F4 drücken, weil irgendwie dauernd weiter geklickt wird, was ja eigentlich nichtmehr sein sollte, wenn das ZA Fenster weg ist. |
Re: Mausklick simulieren funktioniert nicht
Also in Deinem Bild hat der IE Button den Focus
Edit: Nicht vorhandener Roter Kasten :? |
Re: Mausklick simulieren funktioniert nicht
Geht es hiermit?
Delphi-Quellcode:
SendMessage(wnd, messages.BM_CLICK, 0, 0);
|
Re: Mausklick simulieren funktioniert nicht
1. Wenn Du mit den Tabs auf die CheckBox stellst müßte es mit nem Space gehen
2. Timer abgestellt? IMHO Unnötig.
Delphi-Quellcode:
SendMessage(wnd, WM_SETFOCUS, 0, 0);
|
Re: Mausklick simulieren funktioniert nicht
Zitat:
2. Also der grund warum das ganze system hängt: das handle wird ständig gefunden, auch wenn zonealarm grad garkeine warnung ausgibt dies ist auch nach einem windows reboot so obwohl nie eine warnung ausgegeben wurde wenn ich nach dem handle suche, ists da! was kann man da tun? PS: Das SETFOCUS ist nicht unnötig, ohne gehts nicht |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz