Prozess über Prozessnamen killen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Prozess über Prozessnamen killen

Beitrag von PAMKKKKK »

Der Code ist nicht von mir!
ist von Hi-Toro :allright:
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
@Experten: Ist es da besser th32ParentProcessID zu nehmen ?
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Benutzer der PBOSL Libs brauchen dafür nur:

Code: Alles auswählen

KillAllProcess("Firefox.exe",0)
eingeben :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

ts-soft hat geschrieben:Benutzer der PBOSL Libs brauchen dafür nur:

Code: Alles auswählen

KillAllProcess("Firefox.exe",0)
eingeben :wink:
Das ist natürlich noch einfacher :allright:

Leider sind die meisten PBOSL sehr schlecht Dokumentiert..... :?
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

PAMKKKKK hat geschrieben:Leider sind die meisten PBOSL sehr schlecht Dokumentiert..... :?
Einige sind schon schlecht dokumentiert. Da jedoch der Source bei ist, sowie diverse Examples, sollte man trotzdem klarkommen. Es darf übrigens auch jeder bei der Hilfe und bei den Examples mithelfen :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

@ts-soft
Hab schon mit Dokumentiern angefangen.... :mrgreen:

guckstu hier:
http://forums.purebasic.com/german/viewtopic.php?t=4360
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

PAMKKKKK hat geschrieben:@ts-soft
Hab schon mit Dokumentiern angefangen.... :mrgreen:

guckstu hier:
http://forums.purebasic.com/german/viewtopic.php?t=4360
Beim nächstem Update ist Dein Beispiel auch im Examples Ordner :allright:
Ich warte ja eigentlich nur noch auf PB3.94 um ein dazu kompatibles Paket rauszubringen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

bei mir kommt immer :
invalid memory adress (im debugmode)
wenn ich normal starte stürzt das programm ab
(der code besteht nur aus KillAllProcess("Firefox.exe",0) )
Antworten