如何终止进程树(Delphi)

如何终止进程树(Delphi),delphi,kill-process,Delphi,Kill Process,我正在寻找一种方法来终止一个进程,这是我目前拥有的代码 function TerminateProcessByID(ProcessID: Cardinal): boolean; var hProcess: THandle; begin Result := false; hProcess := OpenProcess(PROCESS_TERMINATE, false, ProcessID); if hProcess > 0 then try Result

我正在寻找一种方法来终止一个进程,这是我目前拥有的代码

function TerminateProcessByID(ProcessID: Cardinal): boolean;
var
  hProcess: THandle;
begin
  Result := false;
  hProcess := OpenProcess(PROCESS_TERMINATE, false, ProcessID);
  if hProcess > 0 then
    try
      Result := Win32Check(TerminateProcess(hProcess, 0));
    finally
      CloseHandle(hProcess);
    end;
end;

然而,我最近才意识到,这段代码只会终止父进程,而子进程则没有终止。Delphi中是否有一种方法可用于在终止父进程时终止整个进程树?

正在枚举所有进程以发现该树,然后针对每个进程调用TerminateProcess?找到所有子进程,并终止它们。你的问题本质上是如何列举儿童,这里已经提出了这个问题。Websearch会找到它。@fpiette如果这是唯一的方法,那么yesEnumerating进程已经在这里得到了回答:枚举所有进程以发现树,然后对每个进程调用TerminateProcess对您来说是一个选项吗?找到所有子进程,并终止它们。你的问题本质上是如何列举儿童,这里已经提出了这个问题。Websearch会找到它。@fpiette如果这是唯一的方法,那么yesEnumerating过程已经在这里得到了回答: