Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mausklick simulieren funktioniert nicht (https://www.delphipraxis.net/85264-mausklick-simulieren-funktioniert-nicht.html)

snapman 28. Jan 2007 23:25

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von Sunlight7
Ähm, der Code tut das gleiche, als das Du die Leertaste drücken würdest.

Warum flackert Dein Button???
Hat der den Fokus, bzw. wie oft rufst Du den Code auf?

Mit diesen Makros steure ich immer andere Programme, normal klappt das.

Also dein Tastaturevent an sich geht, daran liegt es nicht, habs anderweitig getestet.
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);

Sunlight7 28. Jan 2007 23:40

Re: Mausklick simulieren funktioniert nicht
 
Versuchs mal mit MSDN-Library durchsuchenSetForegroundWindow oder MSDN-Library durchsuchenBringWindowToTop

snapman 29. Jan 2007 00:10

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von Sunlight7

Das bringt ja nichts, im Vordergrund ist das Fenster ja in jedem Fall.
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?

bitsetter 29. Jan 2007 00:33

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?

snapman 29. Jan 2007 00:35

Re: Mausklick simulieren funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von bitsetter
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?

Tja leider geht der Focus vom alten Button aber nicht weg!!
habe mal einen screenshot angehangen auf dem man das problem sieht, beide buttons haben focus

snapman 29. Jan 2007 01:10

Re: Mausklick simulieren funktioniert nicht
 
So Leute ich kann einen ersten Erfolg vermelden!

Aktueller Code:

Delphi-Quellcode:
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;
Also wenn ich das Fenster fokussiere springt der Fokus zunächst auf einen Info Button, dann auf eine Checkbox
"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.

Sunlight7 29. Jan 2007 01:14

Re: Mausklick simulieren funktioniert nicht
 
Also in Deinem Bild hat der IE Button den Focus

Edit: Nicht vorhandener Roter Kasten :?

bitsetter 29. Jan 2007 01:15

Re: Mausklick simulieren funktioniert nicht
 
Geht es hiermit?
Delphi-Quellcode:
SendMessage(wnd, messages.BM_CLICK, 0, 0);

Sunlight7 29. Jan 2007 01:19

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);

snapman 29. Jan 2007 01:29

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von Sunlight7
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);

1. Also leider geht es seltsamer weise nicht. Warum weiss ich nicht :(

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.
Seite 2 von 4     12 34      

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