Programm bei Windows Shutdown beenden



  • Hallo,

    habe ein Programm, das beim Start von Windows automatisch mitgestartet wird.

    Wenn ich aber Windows herunterfahren will, wird zwar mein Programm beendet aber Windows will dann irgendwie nicht mehr herunterfahren. Da muß ich dann immer ein 2. Mal herunterfahren sagen.

    Andere Möglichkeit ist das Programm immer manuell zu beenden und dann herunterzufahren.

    Fange mit dem Beispiel aus "System - Message für Windows-Shutdown abfangen" die Message ab, worauf ja auch mein Prog. beendet wird.

    Muß ich die Message selbst wieder weiterleiten und wartet Windows evtl. auf eine Rückmeldung????

    Wer kann mir sagen, was ich machen muss, dass Windows alle Programme beendet und ohne zu hängen herunterfährt?

    Gruß
    Oliver



  • Auf welche Art hast du denn die Messages abgefangen?



  • Das selbe Problem hatte ich auch...
    Kann es sein, das du vergessen hast, Forms::Dispatch(msg); Aufzurufen?



  • Hier in diesem Programm, das ich von nem Kollegen übernommen habe, steht das hier im Header des Hauptformulars:

    void __fastcall MyEndSession(TMessage &Msg);
    	void __fastcall MyQueryEndSession(TMessage &Msg);
    BEGIN_MESSAGE_MAP
        	VCL_MESSAGE_HANDLER( WM_ENDSESSION, TMessage, MyEndSession )
        	VCL_MESSAGE_HANDLER( WM_QUERYENDSESSION, TMessage, MyQueryEndSession )
        END_MESSAGE_MAP( TForm )
    

    und das hier in der Unit:

    //---------------------------------------------------------------------------
    void __fastcall TTAFMain::MyEndSession( TMessage &Msg )
    {
        if( Msg.WParam )
            Close( );
    }
    //---------------------------------------------------------------------------
    void __fastcall TTAFMain::MyQueryEndSession(TMessage &Msg)
    {
        Msg.Result = true;
    }
    

    Verfolgt wohl den Zweck des fehlerfreien Herunterfahrens, aber ob es funktioniert, kann ich nicht sagen.

    (Ansonsten hat es noch geholfen, eine Com-Port-Connection (oder was ähnliches) zu schließen/löschen, die bereits geschlossen war. Keine Ahnung, ob das bei dir ähnlich ist.)


Anmelden zum Antworten