Fenster (HWND) durch .dll
-
Hey,
angenommen ich injiziere eine .dll in einen Prozess, mit welcher Funktion komm ich jetzt an das Fenster Handle?
Ich brauch ein HWND des Fensters von dem Prozess indem die .dll injiziert wurde. Ich weiß das der jeweilige
Prozess möglicherweise garkein Fenster hat, aber irgendwie muss es doch eine Funktion geben. GetCurrentProcess
gibt es doch auch für Prozesse...lg
Domenic
-
Diese 3 Funktionen sollten dich dem Ziel näher bringen:
GetCurrentProcessId() + EnumWindows() + GetWindowThreadProcessId()
-
Es gibt nicht das Fenster Handle eines Prozesses, und auch nicht eines Threads.
-
Danke, habe es glaub ich verstanden, ganz schön umständlich.
Mit GetCurrentProcessId die eigene Prozess ID holen, dann alle Fenster auflisten und mit jedem einzelnen HWND die Funktion GetWindowThreadProcessId aufrufen um somit die Prozess ID vergleichen zu können, stimmts?
-
Eine DLL hat - wie Martin sagt - zunächst kein Fensterhandle HWND, sondern nur einen Instanzhandle HINSTANCE. Die DLL kann aber eigene Fenster anlegen. Diese kann man sich vom Programm mit einer DLL-Funktion HWND GetHwnd(void) jederzeit beschaffen, wenn man sie braucht.
-
Es gibt nicht das Fenster Handle eines Prozesses, und auch nicht eines Threads.
Das ist mir bewusst, ich möchte ja auch nur alle Fenster dem Prozess zuordnen, indem sich die .dll befindet.
Wenn der Prozess halt kein Fenster erzeugt hat, dann soll auch nichts passieren. Im Task-Manager kann ich
ja auch unter Anwendungen bei dem jeweiligen Fenster ein Rechtsklick machen und dann "Zu Prozess wechseln".
Ich denke geeky's Vorschlag sollte da funktionieren...