Handle von Controls ermitteln
-
Hallo Leute,
ich will in einer fremden Applikation, von welcher ich das Handle bereits ermittelt habe, ein Edit füllen. Von diesem Edit habe ich aber kein Handle. Kann mir jemand sagen, wie ich dieses ermitteln und dann auch einen Text schicken kann !?
Im voraus vielen Dank!
Skay
-
EnumChildWindows(), FindWindowEx()....
[ Dieser Beitrag wurde am 17.04.2003 um 22:10 Uhr von WebFritzi editiert. ]
-
WM_SETTEXT
-
Mit EnumChildWindows hat es gut geklappt. Aber den Text bekomme ich noch nicht an das Control gesendet. Ich habe es mit der Funktion
BOOL SetDlgItemText( HWND hDlg, // handle of dialog box int nIDDlgItem, // identifier of control LPCTSTR lpString // text to set );
versucht, aber wie bekomme ich den Parameter "int nIDDlgItem" raus ?
[ Dieser Beitrag wurde am 18.04.2003 um 12:27 Uhr von Skay editiert. ]
-
WM_SETTEXT
-
SendMessage(gefundenerHWND, WM_SETTEXT, NULL, StringDerDenTextEnthaelt);
-
mal so ein kleiner gedanke, vielleicht liege ich auch daneben:
SendMessage(gefundenerHWND, WM_SETTEXT, NULL, StringDerDenTextEnthaelt);
- Prozess A sendet o.g. msg an Process B
- StringDerDenTextEnthaelt ist ein LPCSTR auf "xyz" in PROCESS A
- PROCESS B muss auf diesen zugreifen um den text an das edit zu senden
- PROCESS A ist aber von PROCESS B abgeschottet (OS) - kein direkter zugriff möglichkann demnach nicht funktionieren, hmmm ?
rocknix ///
-
Es funktioniert einwandfrei
-
Doch das geht. Aus Gründen der Kompatibilität zu 16-Bit-Programmen, werden Messages an Kontrolls aus 16-Bit-Zeiten in einen Adressraum gemappt, auf den beide Prozesse zugreifen können.
Bei den neuen 32-Bit-Kontrolls (Treeview, Listview), die es unter 16-Bit Windows noch nicht gab, hat Microsoft dies nicht implementeiret, so dass man, wenn man auf diese aus einem anderen Prozess zugreifen will, einen anderen Weg gehen muß.
-
hm, klingt logisch ...
rocknix ///