![]() |
Buttonklick in anderer Anwendung simulieren
Hi,
Ich habe eine "eigentlich" einfachere Frage. Und zwar möchte ich auf einen Button in einer anderen Anwendung (iTunes) klicken. Das Handle bekomme ich schon durch die Hilfe von WinSpy heraus. Ich habe schon viel in Google und hier im Forum gesucht, das Thema wird öfters angesprochen und angeblich auch gelöst, aber leider haben diese Dinge in meinem Programm nie funktioniert. Hier mein bisheriger Code (mit Hilfe von WinSpy):
Delphi-Quellcode:
Vielen Dank im Vorraus :-D
function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var i: Word; hChild: HWND; begin hChild := 0; Result := 0; Dec(ChildNr); for i := 0 to ChildNr do begin hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil); if hChild = 0 then Break; Result := hChild; end; end; procedure TForm1.PlayPauseButtonClick(Sender: TObject); var wndMain, wndChild: HWND; begin wndMain := FindWindow('iTunes','iTunes'); if wndMain <> 0 then begin wndChild := FindWindowEx2(wndMain,'Button', 6); if wndChild <> 0 then begin SendMessage(wndChild, bm_Click,0,0); end; end; end; |
Re: Buttonklick in anderer Anwendung simulieren
Erstmal sollte die Message 'WM_Click' heißen und nicht 'bm_Click', denke ich. Und zum zweiten könnte es sein, das dem Control as am A* vorbei geht, weil es sich vielleicht gar nicht um einen Buttoni handelt, sondern um irgendeine Skin-Komponente.
Das sind natürlich nur Vermutungen, weil ich kein iTunes habe. |
Re: Buttonklick in anderer Anwendung simulieren
Aso, also könnte es sein, dass WinSpy dieses Objekt vielleicht nur fälschlicherweise als TButton erkennt.
|
Re: Buttonklick in anderer Anwendung simulieren
Wenn ich die Eingenschaft auf wm_click ändere, spuckt Delphi die Fehlermeldung aus, dass der Bezeichner undefiniert ist.
|
Re: Buttonklick in anderer Anwendung simulieren
Nee, vermutlich nicht.
![]() WM_Click: Ich bin auch zu blöd und sollte das nächste Mal vorher nachschauen, bevor ich hier irgendwen verbessere. Entschuldigung. Laut Delphi-Code kann man einem TButton eine CN_Command-Message schicken, wobei dann in lparam oder wParam der Wert 'BN_CLICKED' stehen muss. |
Re: Buttonklick in anderer Anwendung simulieren
Ja du hattest recht, ich habe meine Prozedur:
Delphi-Quellcode:
mit dem Windows Taschenrechner ausprobiert und dort funktioniert es.
SendMessage(Handle, BM_Click, 0, 0);
Also ist der Button in iTunes kein "echter" Button. Das Problem liegt also bei WinSpy: Falsche Objektklassenerkennung! |
Re: Buttonklick in anderer Anwendung simulieren
Zitat:
|
Re: Buttonklick in anderer Anwendung simulieren
Zitat:
Ich habe ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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-2025 by Thomas Breitkreuz