![]() |
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
|
Re: button in anderem fenster drücken
Wenn Du ein Formular erstellst, darauf ein Panel, darauf eine GroupBox und darauf ein Label, dann ist das Label ein Kind der GroupBox, diese ein Kind des Panels und dieses ein Kind des Formulars :zwinker: .
|
Re: button in anderem fenster drücken
Liste der Anhänge anzeigen (Anzahl: 1)
hy, darksniper ich hatte vor einiger zeit auch mal angefangen sowas zu programmieren, ich bin aber leider nicht fertig gewordenu nd auch fehlte mir die zeit, ich habe mal das programm mit angehängt, vllt kannst du mit dem ja was anfangen, nur leider geht es noch nicht ganz so wie es soll, das ganze ist aber nonvcl gecoded...
|
Re: button in anderem fenster drücken
Hallo :hi:
Also Ich verwende X-Spy, das funktioniert ganz gut und hat auch einen Code-Generator: ![]() |
Re: button in anderem fenster drücken
Liste der Anhänge anzeigen (Anzahl: 1)
ok habs jetzt (glaub ich) verstanden
aber ich glaub dass dieser button direkt auf der form platziert ist (siehe anhang) wie soll ich das denn jetzt mir FindWinowsEX und sendmessage schreiben? |
Re: button in anderem fenster drücken
hast dir mal mein proggy angesehen da lief alles soweit, nur komischer weise startet er das programm selber nicht so wie ich es will, er sagt immer benutzen sie die richtige exe datei oder sowas in der art weiß nicht mehr genau ist schon wieder ne weile her der spass..
|
Re: button in anderem fenster drücken
Hast du dir FindWindowEx mal angeschaut?
|
Re: button in anderem fenster drücken
dein programm öffnet den launcher aber sonst auch nichts [du hast silkroad falsch geschrieben(im programm)]
ja ok hab ich natürlich aber da steht das hier in der hilfe Zitat:
:?: :gruebel: :?: parent weis ich nicht richtig was was man da schreiben soll (bekommt man das durch FindWindow....?) Childafter der button ist direkt auf dem formular aber wie schreibt man das? Class 'Button' Window ??? [OT] wie kann man zu einem anderem programm wechseln (Alt+Tab ähnlich) ich will von 'silk simul' zu 'sro_client' wechseln [/OT] |
Re: button in anderem fenster drücken
ICH HAB'S
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var hBtnWnd: HWND; begin hBtnWnd :=FindWindow('#32770', 'Silkroad Online Launcher'); hBtnWnd :=FindWindowEx(hBtnWnd, 0, 'Button', ''); begin SendMessage(hBtnWnd, BM_CLICK, 0, 0); end; end; |
Re: button in anderem fenster drücken
hatte ich doch so oder nicht??
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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