Anwendung fernsteuern - Eingebettete Buttons (TSpeedBar)

07/08/2008 - 10:54 von Werner Schmidt | Report spam
Hallo Group,

ich stehe vor dem folgenden Problem:

In einer fremden Anwendung sollen - per Programm - einige Knöpfe
gedrückt, Textboxen eingegeben werden etc.

Soweit kein Problem: Ich ermittle bspw. den Handle des entsprechenden
Buttons (FindWindow()/FindWindowEx()) und sende eine Click-Message.

In der Anwendung, um die es sich handelt, sind die Knöpfe allerdings in
einer TSpeedBar (wahrscheinlich was Delphi-màßiges) eingebettet.
Verwende ich die "Fenster suchen"-Funktion aus Spy++ (wo man das
Fadenkreuz auf das entsprechende Control zieht) erhalte ich lediglich
den Handle des TSpeedBars, ziehe ich das Fadenkreuz über die Buttons in
der TSpeedBar wird mir weiterhin der Handle des TSpeedBars angezeigt.

Daraufhin habe ich das unter
http://www.vbaccelerator.com/home/N...rticle.asp
zu findende Programm ausprobiert, womit ich direkt nach den Handles
einzelner Controls per Eingabe der Caption suchen kann.
Hier erhalte ich einen sich vom TSpeedBar-Handle unterscheidenden
Handle, allerdings ist dieser für alle auf der TSpeedBar befindlichen
Controls gleich.
Sende ich eine Click-Message an diesen Handle passiert (erwartungsgemàß)
nichts.

Wie schaffe ich es also, einen derartigen Button direkt anzusprechen
(das einzige, was mir noch einfàllt wàre die Maus per Programm über den
Button zu bewegen und zu klicken)?

Alternativ würde es mir auch weiterhelfen, Ereignisse der fremden
Anwendung per Programm auslösen zu können.


Hoffe ihr könnte mir weiterhelfen.


Gruß


Werner
 

Lesen sie die antworten

#1 Harald M. Genauck
07/08/2008 - 12:58 | Warnen spam
Hallo Werner,

In einer fremden Anwendung sollen - per Programm - einige Knöpfe
gedrückt, Textboxen eingegeben werden etc.

Soweit kein Problem: Ich ermittle bspw. den Handle des entsprechenden
Buttons (FindWindow()/FindWindowEx()) und sende eine Click-Message.

In der Anwendung, um die es sich handelt, sind die Knöpfe allerdings
in einer TSpeedBar (wahrscheinlich was Delphi-màßiges) eingebettet.
Verwende ich die "Fenster suchen"-Funktion aus Spy++ (wo man das
Fadenkreuz auf das entsprechende Control zieht) erhalte ich lediglich
den Handle des TSpeedBars, ziehe ich das Fadenkreuz über die Buttons
in der TSpeedBar wird mir weiterhin der Handle des TSpeedBars
angezeigt.

Daraufhin habe ich das unter
http://www.vbaccelerator.com/home/N...rticle.asp
zu findende Programm ausprobiert, womit ich direkt nach den Handles
einzelner Controls per Eingabe der Caption suchen kann.
Hier erhalte ich einen sich vom TSpeedBar-Handle unterscheidenden
Handle, allerdings ist dieser für alle auf der TSpeedBar befindlichen
Controls gleich.
Sende ich eine Click-Message an diesen Handle passiert
(erwartungsgemàß) nichts.

Wie schaffe ich es also, einen derartigen Button direkt anzusprechen
(das einzige, was mir noch einfàllt wàre die Maus per Programm über
den Button zu bewegen und zu klicken)?



Statt der Click-Message ein MouseDown/Up-Messagepaar schicken und dabei
die Koordinaten übergeben...? Diese TSpeedBar wird wohl intern anhand
der Koordinaten ermitteln, welcher ihrer Buttons jeweils gemeint ist.


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)

Ähnliche fragen