Wie bekomm ich aus einer ProcessID das Fenster handle?
-
Hi,
wenn eine DLL von einem Process/Thread geladen wird, dann kann man ja via' GetWindowThreadProcessId() die momentane Process bzw. Thread ID ermitteln, doch um mit der DLL arbeiten zu können benötige ich das Fenster handle des jeweiligen Processes.
Hat jemand eine Idee wie ich mir dieses besorgen könnte?Gruß Tobi.
-
Mir ist keine derartige Funktion bekannt.
Denn ein Prozess kann mehrere Fenster haben oder auch keines.
Nimm EnumWindows() und rufe für jedes Fenster GetWindowThreadProcessId() auf!
-
und was bringt das?
-
Du eunumerierst alle (sichtabren) Top-Level-Windows und vergelichst die ProcessId mit der ProcessId, welche Du haben willst...
www.gidf.de findet sicherlich einigen Beispielcode dafür...
-
ahhh jetzt verstehe ich die methode glaube ich xD
hehhe... danke ich werds mal testen.
Gruß Tobi.
-
Hm aba was mach ich mit dem HWND parameter bei der EnumWindowsProc() in der DLL hab ich ja kein hwnd handle???
-
T0bi schrieb:
Hm aba was mach ich mit dem HWND parameter bei der EnumWindowsProc() in der DLL hab ich ja kein hwnd handle???
Die Frage verstehe ich jetzt net.
Du suchst doch das Window Handle?! EnumWindows() ruft für jedes TopLevel-Fenster EnumWindowsProc() auf und liefert dir im 1. Parameter immer das Handle zu dem Fenster. dieses nimmst du und prüfst mit GetWindowThreadProcessId() ob es ein handle zu dem fenster von dem Prozess ist dessen Process-ID du hast.
@jochen: danke für den google-link