2008-09-29 14 views
7

Ich möchte das Herunterfahren-Ereignis in C# für Windows Vista abfangen können. Aufgrund der erweiterten Sicherheitsfunktionen mit Vista werden alle Anwendungen, die nach dem Herunterfahren des Befehls ausgeführt werden, angehalten und in einer Liste angezeigt, die den Benutzer auffordert, etwas mit ihnen zu tun.Abfangen von Windows Vista-Shutdown-Ereignis in C#

Weiß jemand, wie man das überwindet und welche Ereignisse ich in Vista verwenden muss.

Danke.

Antwort

0
System.Environment.HasShutdownStarted 
+0

ist nicht wirklich ein System Shutdown-Ereignis für Vista - es ist eine Eigenschaft ist auf true gesetzt auf jeder Plattform, wenn Ihr Appdomain wird heruntergefahren. –

+0

+1 für Sie, aber wenn Hades die Anwendung zur Abschaltung wollte, wenn die Fenster nicht dies sollte in der Liste angezeigt wird heruntergefahren arbeiten. –

6

Sie können das Anwendungsobjekt von WPF verwenden und das SessionEnding-Ereignis abonnieren. Sie können dann die SessionEndingCancelEventArgs.ReasonSessionEnding Aufzählung betrachten, um genau zu bestimmen, warum die Sitzung endet (LogOff oder Shutdown).

5

Was Sie sehen möchten, ist hier - Application Shutdown Changes in Windows Vista. Grundsätzlich dreht sich alles um WM_QUERYENDSESSION.

Beachten Sie, dass dies im .NET-Framework offen gelegt wird - stattdessen müssen Sie native Funktionen (p/invoke) verwenden und den wndproc in Ihrem Code haken, um auf die Windows-Nachricht zu reagieren.

Für ein Beispiel (zeigt einen Grund, nicht herunterzufahren), können Sie Windows Vista - ShutdownBlockReasonCreate in C# sehen.

0

Verwenden Sie das Ereignis

Application.SessionEnding für WPF.

0

Die SessionEnding/SessionEnded Ereignisse auf Microsoft.Win32.SystemEvents sind möglicherweise, was Sie suchen. Diese