Autor Beitrag
Robson
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 05.02.09 01:00 
Erst mal einen schönen Guten Abend bzw. ne Gute Nacht.

Also, mein Problem ist, dass ich mit Hilfe eines Programmes den Button eines anderen Programmes betätigen möchte. Ich habe es auch hinbekommen, das mit kleineren Programmen, mittels auslesen des Hauptfensters und anschließendes Auflisten der Caption und der Class. Jedoch möchte ich eine Button bei einem mit QT geschriebenen Programm klicken und aus den ausgelesenen Elementen werde ich nicht schlau, bzw. ist es nicht möglich, diese zu "klicken" wenn ich deren Caption übergebe. Gibt es denn noch andere Möglichkeiten die Buttons anzusprechen?

z.B. mit ClickButton(Nummer,'buttonCancel'), wobei "Nummer" das MainWindow ist.

Liebe Grüße

Maurice


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 05.02.2009 um 00:02
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 05.02.09 01:06 
Hallo und :welcome: bei uns!

Wenn du mit FindWindow den Button gefunden hast, dann solltest du an dieses Handle mit SendMessage WM_LBUTTONDOWN und -UP nacheinander senden können, ggf. mit kurzer Pause. Das müsste bereits genügen.
Robson Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 05.02.09 01:17 
Schon mal vielen Dank für die Antwort!

Ich werde das morgen nochmal testen, jedoch habe ich das Gefühl, das ich über die Captions nicht richtig auf die Buttons zugreifen kann, die Texte auf den Buttons stimmen im übrigen nicht genau mit den Captions in der vom "Window" bekommen Liste überein. Benutze zum klicken jedoch auch PostMessage( H,BM_CLICK,0,0). Ich dachte bei QT läge irgend ein besonderer Fall vor. Ich werde bald nochmal nähere Informationen posten.

Wünsche ein Gute Nacht
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 05.02.09 01:25 
Naja, getestet habe ich das jetzt mit keinem solchen Programm, aber auf diese Windowsbotschaften sollten die auch regieren. Sonst müsstest du einen Mausklick an dieser Stelle simulieren statt dies direkt an den Button zu schicken.

Bekommst du denn ein Handle für den Button selbst?
Dabei kann dir dieses Tool helfen, falls du das noch nicht kennst:
www.delphi-forum.de/viewtopic.php?t=21271
Das generiert auch gleich den entsprechenden Delphi-Quelltext. ;-)
Robson Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 05.02.09 13:59 
Hey,

vielen Dank für den Tipp. Mein Fehler war, dass ich auf dem Hauptfenster direkt auf den Button zugreifen wollte, obwohl sich dieser in ein Paar Fensterebenen niedriger befand. Der Button ist jetzt ohne weiteres aktivierbar. Bei der Texteingabe eine ListBox hatte ich aber dann so meine Probleme, anscheinend kann man diese bei QT nicht mit CB_SHOWDROPDOWN oder ähnlichen Befehlen ansprechen. Der Aufruf des Buttons mit BM_CLICK funktionierte auch nicht. Gibt es einen Unterschied zwischen den CB_,BM_ etc. und den WM_ Signalen?

Das Problem habe ich jetzt übrigends gelöst, indem ich den Text mittels WM_KEYDOWN ändere.

Besten Dank