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