Feststellen, ob Programm bereits gestartet

  • Guten Abend zusammen,

    ich habe im Moment mal wieder einen Gedankenknoten. Ich will beim Starten des Scripts prüfen, ob das Script bereits läuft und dann dementsprechend abbrechen.

    Ich dachte an If ProcessExists($sFile) ... . Leider existiert $sFile immer, wenn ich das Programm starte, funktioniert also nicht (im Interpreter klappte es einwandfrei :S).

    Gibt es eine Möglichkeit abzufragen, ob 2 oder mehr Prozesses gleichen Namens laufen?

    :)

  • Passt nur so halb hierzu:
    Ich starte den Chrome mit 2 unterschiedlichen Profilen (1. vom Desktop, 2. aus Script) und will abfragen, ob und welcher davon gestartet ist, da ich ggf. den 2. aus dem Script beenden, den 1. aber unbehelligt lassen muss.

    Gibt es dazu auch einen Weg?

    :)

  • Du müsstest die PID der Prozesse wissen. Wenn du vom Script aus Chrome startest, wirst du die PID ja problemlos bekommen.

    Beispiel:

    Code
    MsgBox(0, "pid", _Execute())
    
    Func _Execute()
        Return ShellExecute("chrome.exe")
    EndFunc
  • Müsste ich dann über gespeicherte PIDs machen, also relativ umständlich.

    Genauer: Mein Script öffnet ein oder mehrere Chrome-Fenster mit speziellem Profil, wird irgendwie unkonventionell beendet (normales Beenden ist kein Problem, da alle geöffneten Fenster gelöscht werden) und Fenster mit dem speziellen Profil bleiben unangenehmerweise offen. Neuer Start vom Script: da ich bisher nicht geschafft habe, die Verbindung mit dem alten Webdriver wieder neu aufzunehmen, startet Chrome nicht mit diesem Profil, da "Chrome schon gestartet".

    Beste Lösung wäre neue Verbindung zum alten Webdriver, ansonsten Test, ob noch Chromes mit dem speziellen Profil offen sind und diese zu löschen. Alle Chromes löschen wäre nicht gut, da auch Chrome-Fenster mit dem Standard-Profil offen sein könnten, die nicht geschlossen werden sollen.

    :)

  • So kommst du an die Chrome-PIDs, die mit einem speziellen Profil gestartet wurden: