请问如何仅根据进程名杀死进程?多谢了!

解决方案 »

  1.   

    uses Tlhelp32;function KillTask(ExeFileName: string): Integer;
    const
      PROCESS_TERMINATE = $0001;
    var
      ContinueLoop: BOOL;
      FSnapshotHandle: THandle;
      FProcessEntry32: TProcessEntry32;
    begin
      Result := 0;
      FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
      FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
      ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
      while Integer(ContinueLoop) <> 0 do
      begin
        if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
        UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
        UpperCase(ExeFileName))) then
        Result := Integer(TerminateProcess(
          OpenProcess(PROCESS_TERMINATE,
          BOOL(0),
          FProcessEntry32.th32ProcessID),
          0));
        ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
      end;
      CloseHandle(FSnapshotHandle);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      KillTask('notepad.exe');
    end;{From 超级猛料}
      

  2.   

    function terminatethread(hthread:thandle;dwexitcode:dword);
    terminatethread(myhosedthread.handle,0);
    建议不使用
    可以用suspend()挂起
    用resume()恢复
      

  3.   

    CreateToolhelp32Snapshot,NT不支持,请问还有别的办法吗?