AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Mausklick simulieren funktioniert nicht

Mausklick simulieren funktioniert nicht

Ein Thema von snapman · begonnen am 28. Jan 2007 · letzter Beitrag vom 26. Mär 2008
Antwort Antwort
Seite 2 von 4     12 34   
snapman
(Gast)

n/a Beiträge
 
#11

Re: Mausklick simulieren funktioniert nicht

  Alt 28. Jan 2007, 22:25
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);
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#12

Re: Mausklick simulieren funktioniert nicht

  Alt 28. Jan 2007, 22:40
Versuchs mal mit MSDN-Library durchsuchenSetForegroundWindow oder MSDN-Library durchsuchenBringWindowToTop
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
snapman
(Gast)

n/a Beiträge
 
#13

Re: Mausklick simulieren funktioniert nicht

  Alt 28. Jan 2007, 23:10
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?
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Mausklick simulieren funktioniert nicht

  Alt 28. Jan 2007, 23:33
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?
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
snapman
(Gast)

n/a Beiträge
 
#15

Re: Mausklick simulieren funktioniert nicht

  Alt 28. Jan 2007, 23:35
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
Miniaturansicht angehängter Grafiken
focus_561.jpg  
  Mit Zitat antworten Zitat
snapman
(Gast)

n/a Beiträge
 
#16

Re: Mausklick simulieren funktioniert nicht

  Alt 29. Jan 2007, 00:10
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#17

Re: Mausklick simulieren funktioniert nicht

  Alt 29. Jan 2007, 00:14
Also in Deinem Bild hat der IE Button den Focus

Edit: Nicht vorhandener Roter Kasten
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Mausklick simulieren funktioniert nicht

  Alt 29. Jan 2007, 00:15
Geht es hiermit?SendMessage(wnd, messages.BM_CLICK, 0, 0);
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#19

Re: Mausklick simulieren funktioniert nicht

  Alt 29. Jan 2007, 00:19
1. Wenn Du mit den Tabs auf die CheckBox stellst müßte es mit nem Space gehen
2. Timer abgestellt?

IMHO Unnötig.
SendMessage(wnd, WM_SETFOCUS, 0, 0);
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
snapman
(Gast)

n/a Beiträge
 
#20

Re: Mausklick simulieren funktioniert nicht

  Alt 29. Jan 2007, 00:29
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.
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz