Programm beenden, wenn aktiv

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von iOS78.

    Programm beenden, wenn aktiv

    Hallo VB-Paradise-User!

    ich hätte gerne, dass mein Programm beim starten prüft, ob es bereits ausgeführt wird.
    Wenn ja, dann soll es das bereits laufende und sich selbst beenden. Das Prüfen habe ich bereits in folgendem Code hinbekommen, aber wie sieht der Code aus, wenn es qusi beide Prozesse (wenn Einer bereits aktiv) beenden soll ???



    Danke schonmal an Alle!!!

    iOS78 schrieb:

    ob es bereits ausgeführt wird.
    Gib Deinem Programm die Eigenschaft SingleInstance:
    Projekt -> Eigenschaften -> Anwendung
    Bilder
    • Single.png

      21,91 kB, 530×470, 132 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn du damit zufrieden bist, das das Programm nur 1x laufen darf (also kein 2. mal gestartet werden soll), kannst du unter
    dem Menü "Project"->"Application" -> Die Option "Make Single Instance Application" markieren.
    Dann brauchst du keinen weiteren Code.
    (ist zumindest ab VS Net 2010 vorhanden)

    Wenn es aber so ist, das auch das bereits laufende Programm geschlossen werden soll, so wäre dies eine Möglichkeit:

    VB.NET-Quellcode

    1. For Each p As Process In Process.GetProcesses
    2. If p.ProcessName = "DeinProzessName" Then
    3. If p.Id <> Process.GetCurrentProcess.Id Then
    4. ' anderen Prozess Killen ! - nicht sonderlich empfohlen
    5. p.Kill()
    6. ' EDIT :
    7. ' MsgBox("Programm läuft schon") <-- Dieses darf ich ja hier nicht verwenden :-)
    8. MessageBox.Show("Programm läuft schon")
    9. End
    10. End If
    11. End If
    12. Next p

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „RoulettePilot“ ()

    SUUUUPER! Danke!

    So einfach hätte ich's mir nicht vorgestellt!


    :thumbsup:

    Aber......

    Folgendes Problem habe ich mit meiner Anwendung. Diese läuft auf einem PC, wo der Benutzer keine Möglichkeit hat auf die Taskleiste zuzugreifen. Die Bedienung erfolgt lediglich über Buttons, etc.. Wenn ich nun meine Anwendung(x) starte, ist diese im Vordergrung und kann bedient werden. Wenn nun aber ein Signal an die im Hintergrund laufende Anwendung(y) gesendet wird (über digitale Eingänge einer Maschine), rückt diese in den Vordergund.
    Wenn ich jetzt versuche meine Anwendung(x) wieder zu starten funktioniert das auch ganz gut mit der Eigenschaft "SingleInstance", aber das Programm bleibt im Hintergrund und kann nicht bedient werden.
    Gibt's hier eine Möglichkeit, das Fenster wieder in den Vordergrund zu holen (Fenster ist nicht minimiert).

    Danke!!!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „iOS78“ ()