CountExeRunning()

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.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

CountExeRunning()

Beitrag von GPI »

Der Code ist dafür da, um rauszufinden, ob das Programm schon mal läuft. Ist recht simpel gehalten, es wird nur nach den EXE-Namen gesucht, ob er vorhanden ist.

ACHTUNG, auf die eigene EXE gibt das Ding natürlich die Zahl 1 aus - die eigene Instanz zählt er mit! Man muss also auf CountExeRunning()>1 testen - dann läuft die exe bereits.

Code: Alles auswählen

Procedure CountExeRunning(ProcessName.s="")
  Protected hSnapShot,iResult,pInfo.PROCESSENTRY32,bProcAvailable
  If ProcessName=""
    ProcessName=GetFilePart(ProgramFilename())
  EndIf
  
  hSnapShot = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS,#Null)
  If hSnapShot
    pInfo\dwsize    = SizeOf(PROCESSENTRY32)
    bProcAvailable  = Process32First_(hSnapShot, @pInfo)
    If bProcAvailable
      Repeat
        If PeekS(@pInfo\szExeFile,260)= ProcessName
          Debug PeekS(@pInfo\szExeFile,260)+" = "+ ProcessName
          iresult+1
        EndIf
        bProcAvailable = Process32Next_(hSnapShot, @pInfo)
      Until Not bProcAvailable
    EndIf  
   
    CloseHandle_(hSnapShot)
   
    ProcedureReturn iResult
   
  EndIf
EndProcedure
Zuletzt geändert von GPI am 02.01.2019 18:27, insgesamt 1-mal geändert.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: CountExeRunning()

Beitrag von Mijikai »

I would add a check for #INVALID_HANDLE_VALUE.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: CountExeRunning()

Beitrag von RSBasic »

:allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten