Ich habe folgende Funktion:
%Vor%Wie Sie sehen können, erstellt es für jeden Bildschirm auf dem PC eine eigene Instanz meiner Anwendung.
Wie kann ich eine Exit-Funktion erstellen, die alle schließt? Die Funktion muss für jede Instanz der App funktionieren, nicht nur für meine "Main" -Instanz.
Sie müssen nur die geöffneten Prozesse im Auge behalten:
%Vor%Dann:
%Vor%Es gibt drei allgemeine Optionen:
WM_CLOSE
-Nachricht an dieses Fenster durch P / Aufrufen von SendMessage
Ein Prozess direkt zu beenden, ist schwerfällig und sollte niemals versucht werden, es sei denn, Sie wissen, dass der Prozess nichts Feines tut, wenn er beendet wird. In der Regel wird dies als letztes Mittel verwendet.
Um das Hauptfenster zu schließen, müssen Sie zuerst herausfinden, was das HWND
dieses Fensters ist; Sie können das tun, indem Sie die Liste der Top-Level-Fenster durchgehen oder den erzeugten Prozess irgendwie an Sie weitergeben. Es nimmt auch an, dass der andere Prozess sich entscheidet, sich selbst zu beenden, wenn Sie fragen, dass sein Hauptfenster geschlossen wird (in Wirklichkeit könnte es sich entscheiden, irgendetwas zu tun, einschließlich die Nachricht vollständig ignorierend). Dieser Ansatz ist ein vernünftiger erster Versuch und funktioniert normalerweise gut mit Prozessen, die nicht unter Ihrer Kontrolle stehen - obwohl Sie das Fenster selbst finden müssen.
Durch die Verwendung eines benutzerdefinierten Kommunikationskanals können Sie vollständig kontrollieren, was passiert und wie es implementiert werden kann, aber es ist ein Ansatz, bei dem der meiste Code geschrieben wird und Sie Quellzugriff auf beide Anwendungen haben müssen. p>
Es kommt darauf an . Wenn Sie sich zu 1000% sicher sind, dass das Töten des Prozesses nichts stört, dann wäre das eine schnelle und schmutzige Lösung. Andernfalls müssen Sie einen der beiden "höflichen" Ansätze verwenden.
Setzen Sie alle geöffneten Prozesse in die Liste, so dass Sie den Prozess nacheinander beenden können. Schauen Sie sich den folgenden Code an:
%Vor%