Wie bekomme ich den HWND eines laufenden Processes ?
-
Hallo Leute,
kann mir jemand sagen wie ich den HWND eines laufenden Processes bekomme ??
Momentan habe ich den Name der EXE, daraus bekommme ich die weiteren Infos wie PID Zeit usw.
Aber wie ich den HWND bekommme weis ich nicht.
Ich möchte dann anschließend mit
SendMessage(HWND, WM_CLOSE, NULL, NULL);das Programm beenden.
Kann mir jemand helfen ??
Gruß
andy_mann
-
Das HWND bekommst du gar nicht so direkt - es gibt ja auch nicht unbedingt nur eines. Aber wenn du die ID schon hast ist es nicht mehr schwer: Einfach alle Fenster durchgehen (EnumWindows) und dann mit GetWindowThreadProcessId überprüfen, ob die ID mit der übereinstimmt, die du schon hast. Den Code dazu gibts afaik auch in den FAQ

-
Hi,
lade Dir mal das Beispielprojekt herunter, darin findest Du sicherlich eine Antwort.
http://www.bytesandmore.de/rad/index.htm?http://www.bytesandmore.de/rad/cpp/snipp/sc03038.phpEdit: In dem Beispiel steht das, was flenders bereits gesagt hat.
Gruß
ravel
-
Hallo, erst mal vielen Dank,
ich habe mir das jetzt mal angeguckt, auch die FAQ, doch leider finde ich nirgends, wie ich eine HWND bekomme.
In denBeispielcode wird dann immer vorausgegeangen, dass einer besteht...Gruß
andy_mann
-
Dann hast du dir offenbar nicht den Thread ShellExecute - Fenster wieder schliessen angeschaut, denn die dortige Funktion von WebFritzi TerminateAppByWindowClosing() ist doch genau das was du brauchst

-
Hallo,
doch genau den habe ich mir angeguckt.Habe auch versucht den Source ein zu binden..
Schon der erste Fehler weist auf den hwnd hin.....
hEditor = FindWindow(NULL, "Unbenannt - Editor"); if(!hEditor) { // Wo soll der hwnd her kommen.... MessageBox(hwnd, "Fenster nicht gefunden", "ERROR", MB_OK); return; }Gruß
andy_mann
-
Das ist nur das Parent für die Message-Box im Fehlerfall. Da kannst du einfach das Handle deines Hauptfensters angeben - wenn du kein solches hast einfach NULL.
Aber das mit FindWindow brauchst du in deinem Fall eh nicht. Du musst nur die oberen 2 Code-Schnippsel kopieren und dann TerminateAppByWindowClosing mit der ID, die du schon hast, aufrufen

-
Vielen Dank,
jetzt funzt es...
Gruß
andy_mann