![]() |
button in anderem fenster drücken
hi
ich will per programm ein button in einem anderen fenster klicken ich hab schon ein bisschen gebastelt aber das funktioniert irgendwie nicht hier mal den code:
Delphi-Quellcode:
was ist da der Fehler?
procedure TForm2.Button1Click(Sender: TObject);
begin sro_starten.execute; //startet das programm 'Silkroad Online Launcher' Sleep (7000); //der zu drückende button erscheint nach +/- 6 sekunden if FindWindow('#32770', 'Silkroad Online Launcher') <> 0 then begin //fenster wird gesucht (klappt) SendMessage(FindWindow('#32770', 'Silkroad Online Launcher'), WM_LBUTTONDBLCLK,897, 572; //button soll gedrückt werden. klappt aber irgendwie nicht panel1.caption:='fenster gefunden und button gedrückt'; Timer1.Enabled := true; //unwichtig end else panel1.caption:='fenster nicht gefunden'; end; kann mir bitte jemand erklähren wie man den button sofort anwählen kann (ohne Mausklick)? Die daten des button sind folgende(WinSpy): -Titel/Text keiner -Klasse "Button" -Handle "1246858" -Control ID "1000" -Koordinaten "(896, 571, 1064, 601)" -Prozess Pfad "C:\Programme\Silkroad\silkroad.exe" |
Re: button in anderem fenster drücken
Wenn die Klasse Button ist - wie kommst du dann auf die Idee, dass du mit FindWindow('#32770', 'Silkroad Online Launcher') den Button findest? Du musst das Handle speichern und dich dann mit FindWindowEx durch die Fenster hangeln. Schau dir also mal mit WinSpy an, wer das Parent dieses Buttons ist, wer dessen Parent usw.
|
Re: button in anderem fenster drücken
Soweit ich weiß musst du auch ein WM_LBUTTONDOWN und danach ein WM_LBUTTONUP schicken. Aber keine Ahnung, ob das noch immernoch so üblich ist.
|
Re: button in anderem fenster drücken
wie bereits erwähnt solltest du dir das Ergebnis von:
Delphi-Quellcode:
speichern. Denn der Aufruf benötigt wie jeder Funktionsaufruf Ressourcen. Man sollte nicht zu verschwenderich damit umgehen. Wenn jedes Programm eine Funktion mehr als nötig aufruft wären wir irgendwann an einem Punkt wo nur noch ein Programm zur gleichen Zeit ausgeführt werden kann.
FindWindow('#32770', 'Silkroad Online Launcher')
|
Re: button in anderem fenster drücken
Zitat:
|
Re: button in anderem fenster drücken
[OT]damals lag es aber nicht an der Ressourcenverschwendung sondern am Betriebssystem.
|
Re: button in anderem fenster drücken
[OT] Jepp, obwohl heute immer noch viele ihre eigenen Fehler auf's OS schieben [/OT]
|
Re: button in anderem fenster drücken
:gruebel:
also wie geht das denn jetzt mit dem FindWindowEx ,was ist ein Parent und was meinst du mit hangeln |
Re: button in anderem fenster drücken
Die meisten Fenster haben ein Parent, z.B. schwirrt ja ein Button normalerweise nicht irgendwo im Weltraum rum, sondern ist an sein Parent, normalerweise das Formular, gebunden. Die MSDN sagt zu FindWindow ganz deutlich:
Zitat:
![]() |
Re: button in anderem fenster drücken
und was ist ein kind eines formulares
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 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