Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

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 11:22


Mausklick simulieren funktioniert nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich versuche, bei Zone Alarm die Sicherheitsabfrage per Fensterhandle automatisch zu beantworten. (ist für eine Demo wie unsicher Windows ist dank der FensterN)
Bei der Windows Firewall klappt dies auch ohne anstand, aber bei ZoneAlarm komme ich über SetFocus nicht hinaus,
d.h. der Button "Zulassen" wird zwar focussiert, aber er klickt sich nicht :-(

Hier der Code (vorwiegend WinSpy generiert):

Delphi-Quellcode:
function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var
  i: Word;
  hChild: HWND;
begin
  hChild := 0;
  Result := 0;
  ChildNr := ChildNr - 1;
  for i := 0 to ChildNr do
  begin
    hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil);
    if hChild = 0 then
      Exit;
    Result := hChild;
  end;
end;
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var wnd: HWND;
begin

wnd := FindWindow('#32770','ZoneAlarm-Sicherheitswarnung');
wnd := FindWindowEx2(wnd,'ZaButton', 3);

if wnd <> 0 then
begin
//ShowMessage('Window found. Handle: ' + IntToStr(wnd));

SendMessage(wnd, WM_SETFOCUS, 0, 0);

PostMessage(wnd, WM_LButtonDown, MK_LBUTTON,0 );
PostMessage(wnd, WM_LButtonUp, 0, 0);  }
end;
Im Anhang ist noch ein Screenshot vom ZA-Fenster und von WinSpy.

jmd anders 28. Jan 2007 11:33

Re: Mausklick simulieren funktioniert nicht
 
fehlen da nicht die koordinaten für den klick?

//bei der windows firewall funktioniert der gleiche code(bis eben auf das andere handle)?

snapman 28. Jan 2007 11:39

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von jmd anders
fehlen da nicht die koordinaten für den klick?

//bei der windows firewall funktioniert der gleiche code(bis eben
auf das andere handle)?

ja da funktionierts (nur das handle ist getaucht)
ich könnts ja mal mit koordinaten probieren

wie kann ich die koordinaten für den button ermitteln mittels des handles?

sebjensen 28. Jan 2007 12:02

Re: Mausklick simulieren funktioniert nicht
 
Hallo.

Das ist ja interessant. Könntest du mal den Code posten, mit dem man quasi ein automatisches Klicken der WindowsFirewall erstellen kann hier posten.

Das finde ich nämlich total spannend und würde mich freuen, wenn du meinen Wunsch erfüllen würdest.

snapman 28. Jan 2007 17:09

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von jmd anders
fehlen da nicht die koordinaten für den klick?

Also Koordinaten werden auf keinen Fall gebraucht.
Folgendes geht z.b. für den Startbutton:

PostMessage(FindWindowEx(FindWindow('Shell_TrayWnd ', nil),0, 'Button', nil), WM_LBUTTONDOWN, MK_LBUTTON, 0);
PostMessage(FindWindowEx(FindWindow('Shell_TrayWnd ', nil),0, 'Button', nil), WM_LBUTTONUP, MK_LBUTTON, 0);

Fängt ZA die Windows Messages ab oder was kann das sein?
Welche Alternativen habe ich?

Mit
Delphi-Quellcode:
SetCursorPos(x, y);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
gehts nämlich auch nicht :-(

[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]

Sascha L 28. Jan 2007 17:54

Re: Mausklick simulieren funktioniert nicht
 
Du fragst, ob Zone-Alarm die Messages abfängt. Ich hoffe doch! Was wäre das für eine Firewall, wenn jedes bösartige Programm sich selbst so einfach Zugang zum Internet beschaffen könnte!

snapman 28. Jan 2007 18:20

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von Sascha L
Du fragst, ob Zone-Alarm die Messages abfängt. Ich hoffe doch! Was wäre das für eine Firewall, wenn jedes bösartige Programm sich selbst so einfach Zugang zum Internet beschaffen könnte!

Naja man kann auch versteckt den Internet Explorer starten, der hat eh "immer" Zugriff.
Aber ob das nun so ist mit abfangen oder nicht wissen wohl am besten die WindowsAPI experten ;)

Sunlight7 28. Jan 2007 21:57

Re: Mausklick simulieren funktioniert nicht
 
Abend!

Zitat:

Zitat von snapman
der Button "Zulassen" wird zwar focussiert, aber er klickt sich nicht :-(

Zwar keine Ahnung hab obs klapp und kein ZA hab, aber spontan auf die Idee komme, wenn der Button schon den Fokus hat, die Leertaste zu drücken:

Delphi-Quellcode:
keybd_event(VK_SPACE, 0, 0, 0);
keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);
Grüßle!

snapman 28. Jan 2007 22:01

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von Sunlight7
Abend!

Zitat:

Zitat von snapman
der Button "Zulassen" wird zwar focussiert, aber er klickt sich nicht :-(

Zwar keine Ahnung hab obs klapp und kein ZA hab, aber spontan auf die Idee komme, wenn der Button schon den Fokus hat, die Leertaste zu drücken:

Delphi-Quellcode:
keybd_event(VK_SPACE, 0, 0, 0);
keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);
Grüßle!

danke, aber auch das funktioniert leider nicht
das seltsame: das event wird zwar ausgeführt, aber wohl leider nur auf meinen eigenen button in der delphi app der dann flackert
wobei das in dem fall nichts mit ZA zu tun hat, bei anderen handles passiert das gleiche
irgendwas stimmt da an deinem code nicht - oder reicht mein setfocus nicht, um die Tastatur auf den jeweiligen Button umzulenken?

Sunlight7 28. Jan 2007 22:18

Re: Mausklick simulieren funktioniert nicht
 
Ä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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:41 Uhr.
Seite 1 von 4  1 23     Letzte »    

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