![]() |
Fremder Button: Mausklick simulieren
Hallo. Wie kann ich in einer fremden Anwendung einen bestimmten Button, dessen Handle ich habe, klicken?
Die einzige Möglichkeit, die mir einfällt, wäre, die Position des Buttons relativ zum Bildschirm zu errechnen, das dann so umrechnen, dass ich es als Parameter bei Mouse_Event benutzen kann und dann mittels dieser Funktion einen Klick zu simulieren. Natürlich muss dann das Fenster, dem der Button "gehört", in den Vordergrund gebracht werden. Leider ist diese Möglichkeit recht aufwändig und ich frag mich, ob es nicht leichter geht. Z. B. indem ich eine WM_COMMAND an das Parent-Fenster des Buttons schicke. Leider hab ich nicht die ID des Buttons (das Zielprogramm ist VCL) und überhaupt weiß ich auch nicht, ob das funktionieren würde. Gibts da irgendeine andere, einfachere Lösung? Ein weiteres Problem ist, dass ich die Caption einer Control (wiederum oben genannter Button) in einer fremden Anwendung herausfinden will. Dass GetWindowText nicht funktioniert, steht ja im SDK, und auch mit WM_GETTEXT gehts nicht. Was allerdings funktioniert, ist WM_GETTEXTLENGTH und WM_SETTEXT. Also muss ich doch irgendeine Art von Zugriff auf die Caption haben. Kennt jemand da eine Möglichkeit? ich danke allen im Voraus, die mir helfen können. |
Moin Chewie,
das Anklicken sollte so funktionieren:
Code:
Wenn Du schon WM_SETTEXT anwenden konntest, verstehe ich allerdings nicht, wo's bei WM_GETTEXT hakt.
SendMessage(hButton,BM_CLICK,0,0);
Hast Du vergessen den Buffer zu reservieren, oder die Bufferlänge zu klein gesetzt? |
Ah, BM_..., wunderbar. Wusste nicht, dass es das gibt, hab nur WM_... gefunden. Ich wollte wieder den kompliziertesten Weg gehen. Danke.
Nachtrag: Und WM_GETTEXT funktioniert jetzt plötzlich auch. Gestern nicht. Komisch. Lag aber wahrscheinlich an den Buffern. Und schon wurden aus 30 Zeilen Code 10... :mrgreen: |
|
Moin Chewie,
BM_ = Button Message WM_ = Windows Message und es gibt noch viele andere z.B. LVM_ ListView Message TVM_ TreeView Message EM_ Edit Message CB_ ComboBox Message LB_ ListBox Message und, und, und... Die fallen mir nur gerade so auf anhieb ein. |
Ja, stimmt. Ich habe nicht noch viel Erfahrung mit nonVCl-Programmen und hab deswegen neben den "normalen" WM_...-Messages nur die Listbox-spezifischen gebraucht. Da hätts mir aber auch einfallen müssen, dass es das auch für die anderen Klassen gibt. Na ja, 1 und 1 zusammenzuzählen ist doch manchmal schwer... :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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-2025 by Thomas Breitkreuz