Programm beenden



  • Hallo,
    ich hab da etwas für nen Freund geschrieben um in nem Spiel nicht in den away-modus zu fallen. Klappt auch ganz gut. Das einzige Problem ist das Programm zu beenden. Das geht nur über das x oben/rechts oder über den Taskmanager und dann auch nur mit der Windowsmeldung "Das Programm reagiert nicht".
    Ich würde gerne das laufende Programm einfach mit der taste q beenden können. Hab dazu allerdings keine Idee

    Hier mein Code:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    nochmal:
    
    Sleep(6000);
            SetCursorPos(300,500);
    Sleep(6000);
            SetCursorPos(100,500);
    
            goto nochmal;
    }
    

    thx
    G-Kar



  • Hallo

    Sleep ist schlecht.
    Siehe TTimer.

    bis bald
    akari



  • Hi,

    void __fastcall TForm1::OnKeyPress(...)
    {
       if (key == 'q')
       {
         Application->Terminate();
       }
    }
    // Die Anwendung muss dabei den Fokus besitzen
    // Andernfalls Systemweiten Hook verwenden (siehe FAQ)
    

    Aber dabei bitte den Post von akari beachten! Sleep unterbricht die Programmausführung für die angegebene Zeit --> Es wird auch nicht auf den Tastendruck reagieren...

    mfg, Micha!



  • Bei der oben gezeigten Implementierung wird es NIE auf irgendeinen Tastendruck reagieren...



  • Hi,

    sorry, wieso? gibts auf dem Form kein KeyPress 😕

    mfg, Micha!



  • Hallo

    Joe meint das trotz dem KeyPress mit dem Code von G-Kar kein Programmende nach dem Drücken des Buttons mit den sleeps ausgeführt werden würde. Weil in der Endlosschleife eben keine anderen Messages/Events verarbeitet werden.
    Um das zu umgehen müß man zumindestens in der Schleife Application->ProcessMessages(); aufrufen. Viel besser ist allerdings immer noch TTimer, zusammen mit dem KeyPress.

    bis bald
    akari



  • Sorry für die mißverständliche Formulierung. akari hat es richtig erkannt.



  • Alleine schon die Konstruktion mit "goto nochmal;" ist schon fast eine "strafbare Handlung".



  • Hi,

    mach doch einfach einen Timer mit Interval 6000 und folgendem Code:

    bool bla;
    if (bla)
    {
     SetCursorPos(100,500);
     bla = 0;
    }
    else
    {
     SetCursorPos(300,500);
     bla = 1;
    }
    

    Und dann machst du noch das mit dem OnKeyPress das Programm beendet wird und fertig! ^^

    mfg
    Jakel


Anmelden zum Antworten