Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Prozess killen, wenn nur window handle bekannt? (https://www.delphipraxis.net/162724-prozess-killen-wenn-nur-window-handle-bekannt.html)

Jumpy 2. Sep 2011 20:16

Prozess killen, wenn nur window handle bekannt?
 
Hallo,

die Frage steht in Zusammenhang mit dem folgnden Thread (der nicht extra gelesen werden muss), hat aber mMn nix mit VBA zu tun, deswegen stell ich sie separat.

http://www.delphipraxis.net/162667-a...en-killen.html


Ich hab mir einen Window-Handle "erobert".

Wie kille ich den dazugehörigen Prozess?

Dazu noch die Info: Der Prozess ist eine (abgestürzte) Excel Instanz. Es sind aber u.U. noch weitere Instanzen und somit Prozesse mit Namen "Excel" vorhanden, die aber nicht aus versehen gekillt werden sollen, es muss der sein, zu dem der windows handle gehört.

Edit: Bevor einer fragt. Habe die Sufu benutzt, aber da geht es immer um Fenstertitel (kann ich aus o.g. Gründen nicht benutzen) und Prozess-Handle oder -ID und das ist doch nicht dasselbe wie der window handle, oder?

brechi 2. Sep 2011 21:12

AW: Prozess killen, wenn nur window handle bekannt?
 
GetWindowThreadProcessId, TerminateProcess bzw. SendMessage + WM_CLOSE oder so einfach mal googlen

ASM 2. Sep 2011 21:15

AW: Prozess killen, wenn nur window handle bekannt?
 
Zitat:

Zitat von Jumpy (Beitrag 1121394)
Ich hab mir einen Window-Handle "erobert".

Wie kille ich den dazugehörigen Prozess?

Code:
const
  PROCESS_MURDER = $0001;

// Target = Window Handle, nicht Process Handle (wie gewünscht)!
procedure KillProcess(Target: Hwnd);
var
  pid: Cardinal;
  ProcessHandle: THandle;
begin
  GetWindowThreadProcessId(Target, @pid);
  ProcessHandle := OpenProcess(PROCESS_MURDER, FALSE, pid);
  TerminateProcess(ProcessHandle, 4);
end;

Jumpy 2. Sep 2011 21:24

AW: Prozess killen, wenn nur window handle bekannt?
 
Ahh, danke!:thumb:

GetWindowThreadProcessId

ist der Zwischenschritt der mir fehlte (Neben der implizierten Info das windo handle <> process ID).

Kann ich Montag gleich wieder durchstarten :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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