Shutdown ohne sichtbares Fenster?

mdo

Mitglied
Hallo!

Das Problem ist schnell erklärt, nur eine Lösung finde ich nicht...

Eine simple Applikation mit einem MainForm. Auf der Form gibt es einen Button um die Form zu verstecken. Mit .Hide() oder visible = false, oder wie auch immer.
Im Hintergrund arbeitet ein Thread irgendwelches Zeugs ab. Um genau zu sein, es ist ein Listener, der Anfragen von einem anderen Programm entgegen nimmt und jeweils entsprechend in einem extra Thread verarbeitet.

Die Applikation soll unsichtbar laufen, bis das System heruntergefahren wird. Passiert das, so soll sie nur schnell noch ihren "Müll" im Temp-Ordner aufräumen. Dieses Aufräumen habe ich im Form_Closing-Event angesiedelt. Und hier ist das Problem...

Denn wenn das Fenster der Applikation nicht sichtbar ist, wird das Form_Closing-Event offensichtlich nicht gefeuert. Der Prozess scheint einfach gekillt zu werden, wenn das System herunterfahren will. Auch eine MessageBox im Form_Closing hilft nicht. Habe auch schon Application.Exit-Event mit ner mbox versehen, bringt auch nichts...

Hat hier jemand eine Idee wie ich das machen kann ohne gleich einen Dienst zu schreiben?

Danke!
 
Hallo!
Das sieht schon sehr gut aus, nur leider ist die Lösung für diesen Fall nicht praktikabel, da mein Programm von einem anderen Programm gestartet wird und dieses nicht unbedingt als angemeldeter Benutzer ausgeführt wird. :(
 
Hast du schon das probiert:
C#:
private static int WM_QUERYENDSESSION = 0x11;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
    if (m.Msg==WM_QUERYENDSESSION)
    {
        //System wird heruntergefahren
    }
    base.WndProc(ref m);

}
 
Zurück