Programm schreiben, das überprüfen soll ob .exe im Hintergrund läuft

  • Hallo,

    ich möchte ein kurzes Programm schreiben, das überprüft, ob ein Programm im Hintergrund läuft und falls nicht, das es dann einmal startet (also in ner Schleife).

    Folgendes klappt mit dem Text-Editor wunderbar:

    AutoIt
    While 1
    If Not ProcessExists("notepad.exe") Then    
    Run("notepad.exe")
    EndIf
    WEnd

    Es startet den Text Editor genau einmal, wenn es nicht geöffnet wird.

    Mache ich allerdings in die "" nicht notepad.exe rein, sondern "C:\Program Files (x86)\AnyDesk\AnyDesk.exe" dann startet es das Programm unendlich oft, auch wenn es bereits läuft.

    Ich kann mir vorstellen, dass es i-was mit dem Pfad zu tun hat, weil oben bei Notepad habe ich nur die .exe angegeben.
    Anydesk in win32 zu verschieben, würde glaube ich keinen Sinn ergeben. Wie sähe das also richtig aus?

  • Ich kann mir vorstellen, dass es i-was mit dem Pfad zu tun hat, weil oben bei Notepad habe ich nur die .exe angegeben.

    Schau dir mal die Hilfe zu ProcessExists an.

    Auszug : Die Prozessnamen sind die ausführbaren Dateien ohne den kompletten Pfad, also z.B. "notepad.exe" oder "winword.exe".

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Schau dir mal die Hilfe zu ProcessExists an.

    Auszug : Die Prozessnamen sind die ausführbaren Dateien ohne den kompletten Pfad, also z.B. "notepad.exe" oder "winword.exe".

    ja ok, das habe ich ja so bereits probiert. Und die .exe in win32 zu packen, damit ich direkt anydesk.exe schreiben kann, macht ja keinen Sinn. Was ist hier also die Lösung?

  • Ganz einfach:

    AutoIt
    While 1
        If Not ProcessExists('AnyDesk.exe') Then    
            Run('C:\Program Files (x86)\AnyDesk\AnyDesk.exe')
        EndIf
        Sleep(250)
    WEnd

    Einmal editiert, zuletzt von SOLVE-SMART (8. März 2023 um 22:39)

  • Genau! Wobei man nicht oft genug an das sleep erinnern kann!!!

    Wird oft vergessen - ist aber wichtig, damit das Programm nicht rund um die Uhr läuft. Da die Angabe in ms ist könnte der Sleep Wert sogar noch viel größer sein,

    Sllep (1000) ist dann gerade mal 1Sekund. Bei 250 schaut das Progi alle 0,25 Sekunden nach--- ich wollte es gar nicht so genau wissen :)

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • ist aber wichtig, damit das Programm nicht rund um die Uhr läuft.

    Tut es aber, da es kein Exit aus der While-Schleife gibt. Sleep verhindern, dass die Schleife ungebremst läuft und so die gesamte CPU-Leistung auffrisst.

  • Tut es aber, da es kein Exit aus der While-Schleife gibt. Sleep verhindern, dass die Schleife ungebremst läuft und so die gesamte CPU-Leistung auffrisst.

    Richtig, für einen Exit müsste man was gesondertes einbauen, sofern das überhaupt gewünscht ist.

  • water

    Deutsche Sprache schwere Sprache. Da schreibt man etwas und dann kann mann es falsch verstehen, Gemeint war was schläft - läuft nicht....

    Es ist ja klar, das es aus der Schleife keinen Ausgang gibt. Das ergibt sich ja auch aus meinen weiteren Ausführungen! Ich hatte das auch so verstanden, dass das so sein soll - deshalb mein HINWEIS - auf sleep - damit das Progi eben NICHT die Prozessorleistung uneingeschränkt in die Höhe treibt.

    Eben wer schläft arbeitet (läuft) nicht! Das brauchen wir ja vom Prinzip auch bei unserem Newsreader im anderen Thread

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)