Beende alle Instanzen meiner App

8

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.

    
Josef Van Zyl 23.10.2012, 08:26
quelle

6 Antworten

7

Sie können alle Prozesse mit demselben Namen beenden:

%Vor%     
Kamyar Nazeri 23.10.2012, 08:33
quelle
3

Sie müssen nur die geöffneten Prozesse im Auge behalten:

%Vor%

Dann:

%Vor%     
user586399 23.10.2012 08:28
quelle
3

Wie können Sie eine Anwendung schließen?

Es gibt drei allgemeine Optionen:

  • Töte es sofort
  • Unter der Annahme, dass es ein Hauptfenster hat und sich konventionell verhält, senden Sie eine WM_CLOSE -Nachricht an dieses Fenster durch P / Aufrufen von SendMessage
  • Angenommen, es möchte kooperieren, verwenden Sie einen benutzerdefinierten Kommunikationskanal, um es zu veranlassen, sich selbst zu beenden

Wie sollten Sie eine Anwendung schließen?

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>

Fazit

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.

    
Jon 23.10.2012 08:40
quelle
1

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%     
Habibillah 23.10.2012 08:33
quelle
1

Ich führe immer den Befehl

aus %Vor%

In der App kann es wie

gemacht werden %Vor%     
Tilak 23.10.2012 08:36
quelle
1

Probieren Sie diese Funktion aus:

%Vor%     
Furqan Safdar 23.10.2012 08:35
quelle

Tags und Links