In Linux nutze ich via RunProgram() das Tool
pgrep mit den Parametern
-alf zu_prüfendes Programm
Im Terminal zum testen:
xed ist hier in diesem Beispiel der Name eines Texteditors.
pgrep liefert (wenn
xed gestartet) die PID und den Namen. Bei manchen Programmen noch mehr Infos (zB. Firefox). Wenn kein laufender Prozess für
xed gefunden wurde, wird nix zurückgeliefert.
In Purebasic via RunProgramm():
Code: Alles auswählen
status = RunProgram("pgrep", "-alf xed", "",#PB_Program_Open | #PB_Program_Read) ;systemtool zum prüfen auf existierende programme starten
Delay(50) ;tick auf die antwort warten
While AvailableProgramOutput(status) ;läuft so lange, wie daten vorliegen
txt = ReadProgramString(status)
Wend
Delay(30)
CloseProgram(status) ;datenverbindung trennen // beendigung nicht nötig, weil pgrep sich selbst beendet hat, wenn keine daten mehr kommen
wenn
txt leer ist/bleibt, ist dein gewünschtes Programm (hier
xed) nicht gestartet. Und wenn txt Text enthält, heißt das für dich, dass
xed bereits läuft. Der Inhalt ist also für diesen Zweck unwichtig - du willst ja nur wissen, ob oder ob nicht...
Windows habe ich nicht, aber vermutlich gibt es dafür ein ähnliches Kommandozeilen-Tool.
Mit PureBasic direkt habe ich es nicht geschafft, bzw. ich habe dafür keine Funktion gefunden.
EDIT: ahh, hat sich überschnitten - mk-soft war schneller. Jo, dann hast ja auch gleich die perfekte Lösung für Windows
