Mit Tastenkombination bestimmte Befehle ausführen



  • Hallo liebe C++-Freunde,

    ich bin Anfänger im Bereich C++ und daher würde ich gerne wissen, wie man z. B. bei der Eingabe der Kombination 11111 ein neues Fenster mit C++ öffnet.

    Danke schonmal im Voraus
    Hunterson



  • Ich denke mal es geht darum, dass Dein Prozess im Hintergrund läuft, und wenn der User die Tastenkombi irgendwann im Windows drückt, das Fenster erscheinen soll?

    Das kannst Du über sogenannte "Keyhooks" regeln. Wenn Du eine Taste drückst, wird in die Message-Queue von Windows ein Eintrag reingeschrieben. Diese Queue (Warteschlange) arbeitet Windows nach und nach ab und reagiert auf die Messages. Keyhooks erlauben es Dir diese Nachrichten auszuwerten bevor sie die Queue erreichen (Du könntest sie sogar davon abhalten).

    Habe das aber leider erst einmal gemacht, daher habe ich spontan keine Codeschnipsel auf Lager 😕

    EDIT: http://www.c-plusplus.net/forum/topic,39145.html



  • Eigentich meine ich mehr sowas wie ein Passwort. Also wenn ich hier die Win32 Konsolenanwendung vor mir habe, möchte ich die Kombination eingeben. Dann soll sich ein neues Fenster öffnen. Also mehr wie ein Passwort.

    mfg
    Hunterson



  • char* eingabe;
    cin>>eingabe;
    if (strcmp(eingabe, "11111") == 0)
    {
       ... // fenster öffnen
    }
    


  • Quellcode schrieb:

    char* eingabe;
    cin>>eingabe;
    if (strcmp(eingabe, "11111") == 0)
    {
       ... // fenster öffnen
    }
    

    Kaboom!

    std::string eingabe;
    cin >> eingabe;
    if (eingabe == "11111") {
    
    }
    

    oder von mir aus

    char *eingabe = new char[6];
    cin.get(eingabe, 5);
    if (strcmp(eingabe, "11111") == 0) {
    
    }
    delete[] eingabe;
    


  • DerKuchen schrieb:

    char *eingabe = new char[6];
    cin.get(eingabe, 5);
    if (strcmp(eingabe, "11111") == 0) {
    
    }
    delete[] eingabe;
    

    oder

    char eingabe[6] = { 0 }; // bzw. memset(eingabe, 0, sizeof(eingabe));
    cin.get(eingabe, 5);
    if(strcmp(eingabe, "11111") == 0) {
        // ...
    }
    

    für 6 Bytes sollte sein Stack noch Platz haben 😉



  • Ja gut... aber die std::string Methode ist schöner (-;


Anmelden zum Antworten