Text in ein Gadget eines fremden Programms schreiben

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
fabulouspaul
Beiträge: 120
Registriert: 01.04.2011 21:59

Text in ein Gadget eines fremden Programms schreiben

Beitrag von fabulouspaul »

Hallo Gemeinde,

ich möchte gerne einen Text in ein StringGadget eines fremden Programms schreiben.

Bei RSBasic habe ich einen kurzen Code zum Schreiben in einen Editor gefunden:

Code: Alles auswählen

RunProgram("notepad.exe","","",0)
Delay(100)
SendMessage_(FindWindowEx_(FindWindow_("notepad",0),0,"Edit",0),#WM_SETTEXT,0,"Hallo Welt")
Aber das reicht nicht, weil es mehrere Gadgets in diesem Programm gibt und ich eines gezielt auswählen muss um dort den Text einzufügen.

Also gibt es eigentlich 2 Aufgaben:
1. das zutreffende Gadget identifizieren (also programmtechnisch) und auswählen
2. den Text in das Feld eintragen und <ENTER> simulieren

Geht sowas überhaupt?

Hintergrund:
Es handelt sich um das Suchfeld in einer Datenbank-Applikation, die u.a. Telefonnummern beinhaltet. Die Telefonanlage bietet die Möglichkeit bei eingehenden Anrufen eine Applikation anzusteuern. Das möchte ich nutzen um ein "CTI für Arme" zu basteln, indem ich die Rufnummer an die DB-Applikation übergebe und den zugehörigen Eintrag suchen lasse. :wink:
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Text in ein Gadget eines fremden Programms schreiben

Beitrag von RSBasic »

Nichts ist unmöglich, sagt ein Autohersteller immer. :D
Am besten lädst du eines der folgenden Programme herunter, die du brauchst, um die Controls eines Fensters zu ermitteln:
http://www.rsbasic.de/temp/WinSpy.exe
http://www.rsbasic.de/temp/ShoWin.exe

Mit Hilfe dieser Programme hast du die Möglichkeit, den Klassennamen der Windows-Controls zu ermitteln. Mit dem Klassennamen kannst du die Handle-Nummer beispielsweise mit FindWindow_() und FindWindowEx_() ermitteln.
Wenn die die Handle-Nummer hast, kannst du fast alles damit machen, wie z.B. Text einfügen, ermitteln oder andere Sachen modifizieren.

Falls du nicht weiterkommst, sag Bescheid.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
fabulouspaul
Beiträge: 120
Registriert: 01.04.2011 21:59

Re: Text in ein Gadget eines fremden Programms schreiben

Beitrag von fabulouspaul »

Vielen dank! Nach etwas rumprobieren, hat das Finden des Fensters- und des Gadget-Handles wirklich gut geklappt! :allright:

Allerdings habe ich festgestellt, dass die Datenbank-Applikation in die ich die Informationen eintrage, eine etwas spezielle Art der Auswertung der Gadgets hat. Auch wenn der Wert im Gadget eingetragen wurde, übernimmt das Programm den Wert nicht (auch wenn ich manuell auf den entsprechenden Button klicke).
Ich musste mit den in PB nachgebauten AutoIt-Funktionen den Suchtext nebst {ENTER} in das Gagdet "tippern", das funktioniert gut.

Dabei habe ich allerdings das Problem, dass trotz gefundenem Window-Handle der Applikation, sich die Applikation nicht immer in den Vordergrund holen lässt.
Wenn ich auf dem Desktop stehe kein Problem, aber wenn z.B. das Notepad im Vordergrund ist, holt mir SetForegroundWindow_() das Applikationsfenster nicht nach vorne und der Suchtext wird stattdessen ins Notepad "getippert". Gibt es bei SetForeGroundWindow() noch etwas besonderes zu beachten?
Antworten