Kill running program
Posted: Sat Aug 06, 2005 10:05 am
Long time ago I found a VB source-code which help us to kill (force to close) another running program. Please help me a code to do like that in PureBasic !!
Thank you.
Thank you.
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
;Kill a named process (like "explorer.exe")
;if you can't kill certain processes and really want to do, look for some code to
;assign the SeDebugPrivilege.
; 06.August 2005 - forum.purebasic.com - Max.
; Relies heavily (very heavily, just changed behaviour, not function, except for the RKillProcess procedure) on code by Siegfried Rings.
; Reference thread: http://forums.purebasic.com/english/viewtopic.php?t=11593&highlight=
#NbProcessesMax = 10000
Dim ProcessesArray(#NbProcessesMax)
#PROCESS_ALL_ACCESS=$1F0FFF
#PROCESS_QUERY_INFORMATION = $400
#PROCESS_VM_READ = $10
Procedure RKillProcess(pID)
pHandle = OpenProcess_(#PROCESS_ALL_ACCESS, #false, pID)
Result=TerminateProcess_(pHandle,0)
ProcedureReturn Result
EndProcedure
Procedure DoProcessListAndKill(KillTask.s)
If OpenLibrary(0, "psapi.dll")
EnumProcesses = IsFunction(0, "EnumProcesses")
EnumProcessModules = IsFunction(0, "EnumProcessModules")
GetModuleBaseName = IsFunction(0, "GetModuleBaseNameA")
GetModuleBaseNameFull = IsFunction(0, "GetModuleFileNameExA")
Debug GetModuleBaseNameFull
If EnumProcesses And EnumProcessModules And GetModuleBaseName ; Be sure we have detected all the functions
CallFunctionFast(EnumProcesses, ProcessesArray(), #NbProcessesMax, @nProcesses)
For k=1 To nProcesses/4
PID=ProcessesArray(k-1)
hProcess = OpenProcess_(#PROCESS_QUERY_INFORMATION | #PROCESS_VM_READ, 0, PID)
If hProcess
CallFunctionFast(EnumProcessModules, hProcess, @BaseModule, 4, @cbNeeded)
Name$ = Space(255)
CallFunctionFast(GetModuleBaseName, hProcess, BaseModule, @Name$, Len(Name$))
FullName$=Space(1024)
CallFunctionFast(GetModuleBaseNameFull,hProcess, BaseModule, @FullName$, Len(FullName$))
Debug Str(PID) + " "+ Name$
Name$=Trim(LCase(Name$))
CloseHandle_(hProcess)
If KillTask=Name$
If RKillProcess(PID)
Debug (" Process "+KillTask+" killed as requested.")
EndIf
EndIf
EndIf
Next
EndIf
CloseLibrary(0)
EndIf
EndProcedure
DoProcessListAndKill("killme.exe")- lbdt_ProcessIt_FindProcess(partofwindowtitle.s)
- lbdt_ProcessIt_GetProcessFilename(partofwindowtitle.s)
- lbdt_ProcessIt_GetProcessID(partofwindowtitle.s)
- lbdt_ProcessIt_KillProcess(partofwindowtitle.s)