Hallo,
wie der Titel schon sagt, suche ich nach einer Möglichkeit den Shutdown zu blockieren.
Im Moment fange ich die WM_QUERYENDSESSION + WM_ENDSESSION Messages in der WndProc Methode ab.
protected override void WndProc(ref Message message)
{
if (message.Msg == WM_QUERYENDSESSION || message.Msg == WM_ENDSESSION)
{
return;
}
base.WndProc(ref message);
}
Das funktioniert auch, doch es werden trotzdem alle Anwendungen geschlossen, die die WM_QUERYENDSESSION Message vor meiner Anwendung erhalten.
Gibt es ein Shutdown Event o.Ä. , das gefeuert wird, bevor WM_QUERYENDSESSION an alle Fenster gesendet wird? (mit SystemEvents.SessionEnding klappts nicht)
Oder gibt es sonst irgendeine Möglichkeit den Shutdown zu blockieren, bevor irgendein Programm geschlossen wird?
Hallo!
Unabhängig davon, dass ich keine direkte Lösung parat habe, wüsste ich gerne, aus welchem Grund man einen ShutDown verhindern sollte, vor allem das Beenden der Anwendungen.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Um ein "versehentliches" Herunterfahren zu verhindern.
Beispielsweise wenn irgendein Task/Programm/Script im Hintergrund läuft, soll der Shutdown blockiert und der Benutzer darauf hingewiesen werden, dass evtl. Daten oder der Fortschritt (z.B. bei einem Download) verloren gehen können.
Ich weiß, dass jedes Programm selbst warnen sollte, wenn beim Shutdown Daten verloren gehen könnten, aber oft ist das eben nicht der Fall.
Das ganze soll auch nur als Option angeboten werden und der Shutdown soll auch nur blockiert werden, wenn vom Benutzer selbst definierte Regeln erfüllt sind.
MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden!
*"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht."
*"Ignorance simplifies ANY problem."
*"Stoppt die Piraterie der Musikindustrie"
Danke für den Link. 🙂
Leider kenne ich diese Methode bereits und sie hilft mir nicht weiter.
Mein Problem ist nicht, dass ich nicht weiß wie ich den Shutdown blockieren/unterbrechen kann, sondern dass ich nicht weiß wie ich den Shutdown rechtzeitig blockieren kann, bevor irgendwelche Programme geschlossen werden.
Also meinst du sowas wie Word es Integriert hat?
(Dort wird auch das Herunterfahren verhindert wenn noch ungespeicherte Daten vorhanden sind. Sobald der User dann eine Option gewählt hat wird heruntergefahren)
MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden!
*"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht."
*"Ignorance simplifies ANY problem."
*"Stoppt die Piraterie der Musikindustrie"
Laut diversen Artikeln die ich jetzt überflogen bin musst du nur das QueryEndSession Event abhorchen und bei einem Abbruch "false" zurück geben was du in deinem Codeausschnitt nicht machst.
Bei QueryEndSession wird, zumindest laut Doku, noch nichts geschlossen. Erst bei EndSession.
Ich nehm alles zurück. 😃
When an application returns TRUE for this message, it receives the WM_ENDSESSION message, regardless of how the other applications respond to the WM_QUERYENDSESSION message
Man müsste sich irgendwie an erste Stelle der Windows Nachrichtenschleife reinhängen. Hätt aber keine Ahnung wie.
Siehe Doku: WM_QUERYENDSESSION Message.
Lg XXX
Der Link in der Doku sieht aber dazu vielversprechend aus: SetProcessShutdownParameters Function.
Lg XXX
@ProGamer
Jap, genau und das klappt auch schon so.
Nur eben "zu spät".
@xxxprod
Danke! 👍
Ich glaub SetProcessShutdownParameters ist genau das was ich suche.
Ich werds gleich mal ausprobieren und dann Rückmeldung geben, obs geklappt hat, oder nicht.