Code: Alles auswählen
EnableExplicit
Procedure GetPidFromName(Name.s)
  Protected result
  Protected Process.PROCESSENTRY32
  Protected ProcSnap = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0)
  If ProcSnap <> #ERROR_INVALID_HANDLE
    Process\dwsize = SizeOf(PROCESSENTRY32)
    If Process32First_(ProcSnap, Process) = #True
      While Process32Next_(ProcSnap, Process) <> #False
        If Trim(PeekS(@Process\szExeFile,#MAX_PATH)) = Name.s
          result = Process\th32ProcessID
          Break
        EndIf
      Wend
    EndIf
    CloseHandle_(ProcSnap)
  EndIf
  ProcedureReturn result
EndProcedure
Procedure TerminateProcess(Name.s, ExitCode = 0)
  Protected result
  Protected processID = GetPidFromName(Name.s)
  If processID
    Protected hProcess  = OpenProcess_(#PROCESS_TERMINATE, #False, processID)
    If hProcess
      If TerminateProcess_(hProcess, ExitCode)
        result = #True
      EndIf
      CloseHandle_(hProcess)
    EndIf
  EndIf
  ProcedureReturn result
EndProcedure
;test:
If TerminateProcess("CCleaner64.exe")
  MessageRequester("","CCleaner64.exe was successfully terminated",0)
Else
  MessageRequester("","Failed to terminate CCleaner64.exe",0)
EndIf
If TerminateProcess("Eraser.exe")
  MessageRequester("","Eraser.exe was successfully terminated",0)
Else
  MessageRequester("","Failed to terminate Eraser.exe",0)
EndIf
If TerminateProcess("flux.exe")
  MessageRequester("","flux.exe was successfully terminated",0)
Else
  MessageRequester("","Failed to terminate flux.exe",0)
EndIf