Programm blockiert herunterfahren des Rechners



  • Ich habe ein Programm im Hintergrund (Tray-Leiste) laufen. Es handelt sich dabei um einen Server, der nur über Popup-Menü beendet werden sollte. Deswegen habe ich im OnCloseQuery CanClose=false gesetzt. Das blockiert aber nun wohl den Rechner wenn ich versuche ihn herunterzufahren.

    Kennt jemand eine Lösung?

    Bedankt!



  • Bei dem OnClose Event übergibt Windows normalerweise, aus welchem Grund die Anwendung beendet werden soll... Ich schätzte, dass dir das auch in der VCL zur verfügung steht.



  • Bei dem OnClose Event übergibt Windows normalerweise, aus welchem Grund die Anwendung beendet werden soll...

    Eigentlich nicht, weil

    he WM_CLOSE message is sent as a signal that a window or an application should terminate.

    WM_CLOSE

    Parameters

    This message has no parameters.

    Jedenfalls steht kein Paramter im OnClose zur Verfügung

    Besser wäre es m.E. auch WM_QUERYENDSESSION als eigene Message in das Programm aufzunehmen und auf diese mit einem Programmende zu reagieren



  • Und wie mache ich das 😕



  • Steht in der Hilfe unter dem Thema

    Systemmeldungen behandeln

    In der VCL werden Meldungen als Botschaften bezeichnet, die sowohl von Windows, VCL-Komponenten oder selbst erstellten Komponenten ausgehen können.
    Dieses Kapitel befaßt sich mit drei Themenbereichen, die für die Arbeit mit Botschaften wichtig sind:

    Das Botschaftsbehandlungssystem
    Die Behandlung von Botschaften ändern
    Neue Routinen zur Botschaftsbehandlung erstellen



  • Hallo,

    WM_QUERYENDSESSION extra abzufangen ist unnötig, da das ja schon in der VCL gemacht wird und dort OnCloseQuery aufruft.
    Man muss also das CanClose=false einfach wieder entfernen und dann versuchen die anderen Möglichkeiten die Form zu schliessen zu blockieren.



  • Habe das so verstanden, dass die Anwendung nur geschlossen werden darf, wenn der Rechner runtergefahren wird. Und nicht wenn bsp. der Anwender das Fenster schließt.

    Das kann man dann mit CloseQuery nicht unterscheiden, während WM_QERYENDSESSION da ein Anhaltspunkt ist


Log in to reply