Programm nur beenden, wenn Windows beendet wird



  • Hi Leute......
    Ich arbeite gerade an einem Programm, was vom Benutzer nur über den Taskmanager
    geschlossen werden kann. Also vielleicht noch durch irgendwas anderes, jeden-
    falls setze ich CanClose bei OnCloseQuery der Hauptform eigentlich immer false.
    Jetzt habe ich dann aber das Problem, dass wenn Windows heruntergefahren werden
    soll, der das nicht macht, weil ja mein Programm NULL auf die Message
    WM_QUERYENDSESSION zurückgibt (weil ich CanClose halt immer false setze).
    Ich hatte versucht, dass Problem zu umgehen, indem ich eine bool-Variable
    erstelle, die nur true wird, wenn mein Programm die WM_QUERYENDSESSION
    Nachricht erhält, doch dann bekomm ich immer den Fehler:
    C++ Exception

    void __fastcall TForm1::AppMessage ( tagMSG &Msg, bool &Handled )
    {
        if ( Msg.message == WM_QUERYENDSESSION )
        {
            DarfSchließen = true; // DarfSchließen ist in private deklariert
                                  // und wird in OnCloseQuery CanClose übergeben
        }
    /*    if ( Msg.message == WM_ENDSESSION ) // Dieser Teil sollte bewirken, dass
        {                                     // wenn Windows doch nicht herunter-
            if ( Msg.wParam == false )        // gefahren wird (aus was weiß ich
            {                                 // für einen Grund), mein Programm
                DarfSchließen = false;        // doch nicht beendet werden kann.
            }                                 // Vielleicht liegt hier ein Fehler,
            else                              // oder ich kann das allgemein so
            {                                 // nicht machen, aber der Fehler kommt
                DarfSchließen = true;         // auch ohne diesen Teil...
            }
        }*/
    }
    

    Weiß jemand Rat?

    MFG Aoeke

    [ Dieser Beitrag wurde am 02.05.2003 um 20:07 Uhr von Aoeke editiert. ]



  • FAQ, unter "System"?


Anmelden zum Antworten