ist von Hi-Toro

Ich habe die 2 Codes eigentlich nur zusammengeklebt.
Aber weil damit auch Anfänger umgehen können, Poste ich das mal.
Damit kann man Prozesse bei Nennung des *.exe Namen abschiessen.
Code: Alles auswählen
; Author: Hi-Toro
; Date: 30. November 2003
; Should run on all Windows version from Win95 till WinXP !!
; Modified by Pamkkkkk 12.August 2005
; PB3.93
Procedure.b KillProcess (PID)
; Author: Hi-Toro
; Date: 30. November 2003
; Kills a Process by given Process Number (ID)
; Returns #True if Process is killed #False if its not
#PROCESS_TERMINATE = $1
#PROCESS_CREATE_THREAD = $2
#PROCESS_VM_OPERATION = $8
#PROCESS_VM_READ = $10
#PROCESS_VM_WRITE = $20
#PROCESS_DUP_HANDLE = $40
#PROCESS_CREATE_PROCESS = $80
#PROCESS_SET_QUOTA = $100
#PROCESS_SET_INFORMATION = $200
#PROCESS_QUERY_INFORMATION = $400
#PROCESS_ALL_ACCESS = #STANDARD_RIGHTS_REQUIRED | #SYNCHRONIZE | $FFF
; This appears to be pretty much how Windows kills a program if you 'End Process'
; from the Task Manager. Note that this is 'unfriendly'!
result = #False
phandle = OpenProcess_ (#PROCESS_TERMINATE, #False, PID)
If phandle <> #Null
If TerminateProcess_ (phandle, 1)
result = #True
EndIf
CloseHandle_ (phandle)
EndIf
ProcedureReturn result
EndProcedure
Procedure.b Kill_Prozess_by_Name(ProcName.s)
; Author: Hi-Toro
; Date: 30. November 2003
; Modified by Pamkkkkk 12.August 2005
; Should run on all Windows version from Win95 till WinXP !!
; Crowls thru the running Processes, to find the Prozess ID from a given Prozessname
; Returns #True if Process is found #False if its not found
PID.l = 0
#TH32CS_SNAPHEAPLIST = $1
#TH32CS_SNAPPROCESS = $2
#TH32CS_SNAPTHREAD = $4
#TH32CS_SNAPMODULE = $8
#TH32CS_SNAPALL = #TH32CS_SNAPHEAPLIST | #TH32CS_SNAPPROCESS | #TH32CS_SNAPTHREAD | #TH32CS_SNAPMODULE
#TH32CS_INHERIT = $80000000
#INVALID_HANDLE_VALUE = -1
#PROCESS32LIB = 9999
Structure PROCESSENTRY32
dwSize.l
cntUsage.l
th32ProcessID.l
th32DefaultHeapID.l
th32ModuleID.l
cntThreads.l
th32ParentProcessID.l
pcPriClassBase.l
dwFlags.l
szExeFile.b [#MAX_PATH]
EndStructure
; NOTE: I've chosen to add processes to this list so that it can be played with as necessary...
NewList Process32.PROCESSENTRY32 ()
; Add processes to Process32 () list...
If OpenLibrary (#PROCESS32LIB, "kernel32.dll")
snap = CallFunction (#PROCESS32LIB, "CreateToolhelp32Snapshot", #TH32CS_SNAPPROCESS, 0)
If snap
DefType.PROCESSENTRY32 Proc32
Proc32\dwSize = SizeOf (PROCESSENTRY32)
If CallFunction (#PROCESS32LIB, "Process32First", snap, @Proc32)
AddElement (Process32 ())
CopyMemory (@Proc32, @Process32 (), SizeOf (PROCESSENTRY32))
While CallFunction (#PROCESS32LIB, "Process32Next", snap, @Proc32)
AddElement (Process32 ())
CopyMemory (@Proc32, @Process32 (), SizeOf (PROCESSENTRY32))
Wend
EndIf
CloseHandle_ (snap)
EndIf
CloseLibrary (#PROCESS32LIB)
EndIf
; List processes...
ResetList (Process32 ())
While NextElement (Process32 ())
If UCase(ProcName.s) = UCase(PeekS (@Process32 ()\szExeFile))
PID = PeekL (@Process32 ()\th32ProcessID)
EndIf
Wend
If PID > 0
If KillProcess (PID)
ProcedureReturn #True
EndIf
EndIf
ProcedureReturn #False
EndProcedure
;-Example Call :::
Debug Kill_Prozess_by_Name("firefox.exe")
; ExecutableFormat=Windows
; EOF