![]() |
Mit der ProcessID (PID) an das WindowHandle kommen?
Hi,
ich habe folgendes Problem. Ich starte mit Hilfe einer Delphi-Anwendung mehrere Programme (CreateProcess). Nun will ich diese beenden. Das habe ich vorher mit
Delphi-Quellcode:
gemacht.
TerminateProcess(ProcInfo.hProcess,0);
Nur ist das Problem, dass die gestarteten Prozesse "hart" beendet werden. Sprich deren eigene "Schließen"-Funktion wird nicht aufgerufen. Daher bräuchte ich eine Möglichkeit wie man anhand der PID an das WindowHandle kommt, damit ich mit "SendMessage" ein "Close" an die Anwendung schicken kann. "FindWindow" ist keine Lösung, da sich der Fenstertitel ändern kann. Ich hoffe mir kann geholfen werden. Grüße Der Doktor |
Re: Mit der ProcessID (PID) an das WindowHandle kommen?
Hol dir mit EnumWindows alle Fenster, dann zu jedem Fenster die ProzessID mit GetWindowThreadProcessId und vergleichst die mit der ProzessID, die du hast. Problem: Ein Prozess kann mehrere Fenster haben.
|
Re: Mit der ProcessID (PID) an das WindowHandle kommen?
Zitat:
|
Re: Mit der ProcessID (PID) an das WindowHandle kommen?
Naja mit der Funktion geht es wohl doch nicht. Die Prozesse die ich starte sind zur Trayleiste minimiert. Laut diversen Forumseinträgen liefert die Funktion nur Fenster zurück, die wirklich sichtbar sind im Taskmanager.
Ich könnte noch mit dem EXE-Namen dienen, aber da wüsste ich jetzt nicht wie man dadurch an das Fensterhandle kommt. Vielleicht kann man auch die Anwendungen kurz vor dem Schließen maximieren aber dafür müsste ich ja auch irgendwie an die heran kommen. |
Re: Mit der ProcessID (PID) an das WindowHandle kommen?
Moin Ruff,
Zitat:
Die sollte Dir auch unsichtbare Fenster zurückliefern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz