Doppelten Start verhindern für minimierte verborgene Anwendung

Achim Schenk 20 Zuverlässigkeitspunkte
2024-05-06T16:04:57.2033333+00:00

Hi Group,

wenn ein User auf das X in der Form klickt, schließe ich die Anwendung nicht, sondern minimiere sie und verstecke sie im Systemtray.

Das klappt gut mit den Funktionen

Me.WindowState = FormWindowState.Minimized
Me.ShowInTaskbar = False

Maximiert wird es per Klick auf das Progamm-Icon aus dem Systemtray (Symbole im Systemtray einblendet).

Me.ShowInTaskbar = True

Me.WindowState = FormWindowState.Normal

Einen Doppelstart der Anwendung verhindere ich mit Process.GetProcessesByName.

Aber ich möchte bei einem vermeintlichen Doppelstart zusätzlich die minimierte Anwendung maximieren/in den Vordergrund bringen.
Das geht normalerweise, indem man den MainWindowHandle des Prozesses an ShowWindow (user32.dll) übergibt.

Aber jetzt kommt das Problem:

Ich bekomme den MainWindowHandle wegen 'ShowInTaskbar=false' nicht!

Habt Ihr eine Idee, wie ich ggf. auf anderem Weg den Prozess hervorbringen kann?

Gruß Achim

.NET
.NET
Microsoft-Technologien, die auf dem .NET-Softwareframework basieren.
18 Fragen
0 Kommentare Keine Kommentare
{count} Stimmen

Akzeptierte Antwort
  1. Thomas Wycichowski 4lhome.org 585 Zuverlässigkeitspunkte
    2024-05-06T20:18:24.4466667+00:00

    Hallo Achim,

    ich persönlich würde eine Nachricht an den laufenden Prozess senden damit dieser sich selbst wieder hervorbringt.

    Nennt sich Interprocess Communication IPC

    Ich persönlich würde einen Socket der auf localhost lauscht nehmen

    Verwenden von Sockets zum Senden und Empfangen von Daten über das TCP

    Aber es gibt viele andere Möglichkeiten

    Gruß

    Thomas


0 zusätzliche Antworten

Sortieren nach: Am hilfreichsten