ungewolltes beenden unterbinden



  • Hallo
    Ich habe ein Programm mit embedded Visual C++ geschrieben, das auf einem mobilen Scanner mit WinCE läuft. Damit die User an dem Gerät nicht rumfummeln wollte ich ein Verlassen des Programmes nur gestatten wenn man weis wie (spezielle Eingabe).
    Dazu habe ich nun schon die Taskleiste entfernt und das Window der Anwendung so groß gemacht, dass man nicht mehr auf den exit Button kommt.
    Problem an der Sache: Hotkeys funktionieren noch: Mit den Tasten Enter und Esc kommt man aus dem Programm heraus und ein Druck auf die Windows-Taste funktioniert auch, dass der "Start-Button" gedrückt wird.
    Wie könnte man soetwas unterbinden?
    Liebe Grüße
    Sebastian



  • Keyboardhook ist das Stichwort, mit welchem du bei Google weiterkommen solltest.



  • und das Window der Anwendung so groß gemacht, dass man nicht mehr auf den exit Button kommt.

    Schalt doch einfach den "Close-Button" ab.

    Hotkeys funktionieren noch: Mit den Tasten Enter und Esc kommt man aus dem Programm heraus und ein Druck auf die Windows-Taste funktioniert auch, dass der "Start-Button" gedrückt wird.

    Einige hotkeys kann man in der Windows-Registry abschalten (STR-ALT-Entf).

    Den Enterbutton und ESC kann man gleub ich mit

    PreTranslateMessage(MSG* pMsg)
    

    abfangen.

    OnSysKeyDown()
    

    und

    OnSysCommand()
    

    könnten auch hilfreich sein.

    Am besten den Dialog als Ramehnlos machen, dann kann man ihn glaub ich auch nicht mehr verschieben.


  • Mod

    IMHO muss er doch nur WM_CLOSE behandel und einfach FALSE zurückgeben, wenn er die Applikation nicht beenden will.

    Eingriffe in PreTranslateMessage etc. sind IMHO nicht nötig.



  • Wie meinst du das? Kann man das mit der normalen MessageMap regeln?
    Also dass hinter ON_WM_DESTROY() einfach eine andere Funktion geschrieben wird.. meinetwegen die ausgibt Programm darf nicht beendet werden, und somit das Beenden des Windows übersteuert wurde?
    Danke für die Hinweise schonmal 🙂
    Sebastian



  • ich denke, er meint es so:

    void CDeinGeilerDialog::OnClose() 
    { 
      //CDialog::OnClose(); //<- einfach auskommentieren und der Dialog schließt sich nicht beim Klick aufs X
    }
    

Anmelden zum Antworten