F-Tasten?



  • Hallo,

    Ich möchte, dass eine Funktion aufgerufen wird, wenn ich eine bestimmt F-Taste drücke (unter windows). Wie mache ich das?

    Habe mir diesen Thread angesehn: Klick mich

    Dann hab ich mal ReadKey in der MSDN gesucht und bin auf Console.ReadKey() gestossen.. hier das Beispiel aus der MSDN:

    // This example demonstrates the Console.ReadKey() method
    using namespace System;
    using namespace System::Text;
    int main()
    {
       ConsoleKeyInfo cki;
    
       //               0        1         2         3         4         5         6
       //               123456789012345678901234567890123456879012345678901234567890
       String^ m1 = "This example discovers the console and modifier keys "
       "that you press.\n";
       String^ m2 = "Press any combination of CTL, ALT, and SHIFT modifier keys, "
       "and a console key.\nPress the Escape (Esc) key to quit: ";
       String^ m3 = "You pressed ";
       String^ m4 = " (character '{0}').";
       StringBuilder^ sb = gcnew StringBuilder;
    
       //
       // The Console.TreatControlCAsInput property prevents this example from
       // ending if you press CTL+C, however all other operating system keys and 
       // shortcuts, such as ALT+TAB or the Windows Logo key, are still in effect. 
       //
       Console::TreatControlCAsInput = true;
       Console::WriteLine( m1 );
       do
       {
          Console::WriteLine( m2 );
          sb->Length = 0;
          cki = Console::ReadKey( true );
          sb->Append( m3 );
          if ( (int)cki.Modifiers )
          {
             if ( (int)(cki.Modifiers & ConsoleModifiers::Alt) )
                      sb->Append( "ALT+" );
    
             if ( (int)(cki.Modifiers & ConsoleModifiers::Shift) )
                      sb->Append( "SHIFT+" );
    
             if ( (int)(cki.Modifiers & ConsoleModifiers::Control) )
                      sb->Append( "CTL+" );
          }
    
          sb->Append( cki.Key.ToString() );
          sb->AppendFormat( m4, cki.KeyChar );
          sb->AppendLine()->AppendLine();
          Console::WriteLine( sb );
       }
       while ( cki.Key != ConsoleKey::Escape );
    
       // Note: This example requires the Escape (Esc) key.
    }
    
    /*
    This example produces results similar to following text:
    
    This example discovers the console and modifier keys that you press.
    
    Press any combination of CTL, ALT, and SHIFT modifier keys, and a console key.
    Press the Escape (Esc) key to quit:
    You pressed A (character 'a').
    
    Press any combination of CTL, ALT, and SHIFT modifier keys, and a console key.
    Press the Escape (Esc) key to quit:
    You pressed SHIFT+A (character 'A').
    
    Press any combination of CTL, ALT, and SHIFT modifier keys, and a console key.
    Press the Escape (Esc) key to quit:
    You pressed ALT+SHIFT+CTL+A (character ' ').
    
    Press any combination of CTL, ALT, and SHIFT modifier keys, and a console key.
    Press the Escape (Esc) key to quit:
    You pressed Escape (character '?').
    */
    

    Allerdings verstehe ich das nicht so ganz.
    Kann mir einer nen Code-Beispiel geben, wie ich es zB bei der F2-Taste mache?
    Es soll dann zum Test einfach nur ein Text oder ne MessageBox ausgegeben werden.

    Danke schonmal.



  • Hallo,

    Immer erst in die FAQ gucken:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39324.html

    MFG winexec*



  • Sehr witzig 😉
    Was meinst du wohl, warum ich den selben Link oben gepostet hab?
    Leider versteh ich das aber nicht so richtig...
    Also wär nett, wenn einer nen konkretes Beispiel posten könnte!



  • Hallo,

    Hab ich wohl überlesen. Entschuldigung.

    #include <iostream>
    #include <conio.h>
    using namespace std;
    
    int main(){
        cout << "Programm zum Testen der F-Tasten\n\n";
        while(true){
            if(getch() == 0){
                int dem_getch = getch();
                switch(dem_getch){
                    case 59:
                        cout << "F1\n";
                        break;
                    case 60:
                        cout << "F2\n";
                        break;
                    case 61:
                        cout << "F3\n";
                        break;
                    case 62:
                        cout << "F4\n";
                        break;
                    case 63:
                        cout << "F5\n";
                        break;
                    case 64:
                        cout << "F6\n";
                        break;
                    case 65:
                        cout << "F7\n";
                        break;
                    case 66:
                        cout << "F8\n";
                        break;
                    case 67:
                        cout << "F9\n";
                        break;
                    case 68:
                        cout << "F10\n";
                        break;
                }
            }
        }
    }
    

    Ich hoffe das hilft.

    MFG winexec*



  • Hab ich wohl überlesen. Entschuldigung.

    Kein Problem 😉

    Ich hoffe das hilft.

    Genau das, was ich gesucht habe. Danke!



  • Hab doch noch ne Frage:

    Wie kann ich es so machen, dass das Programm im Hintergrund immer auf die Tastenschläge wartet?

    Denn wenn ich das Programm minimiere und dann z.B. F1 drücke, geht's nicht.



  • F-Tasten schrieb:

    Wie kann ich es so machen, dass das Programm im Hintergrund immer auf die Tastenschläge wartet?

    Mit Hilfe der WinAPI, Stichwort Keyboard-Hook.

    Greetz, Swordfish



  • Danke,

    Wenn ich mich jetzt noch öfters mit der WinAPI beschäftigt hätte, hätte mir das bestimmt geholfen.
    Aber ich bin noch C++ Anfänger und hab mich bisher kaum damit beschäftigt.
    Werde ich aber die nächste Zeit mit Sicherheit tun.

    Wär echt nett, wenn mir einer mal nen Beispiel geben könnte.
    Wenn ich zB die F2 Taste drücke, soll zum Test eine MessageBox erscheinen.

    Die Suchfunktion hat viel ergeben.. auch Google.
    Aber da steht was von Hook uninstallen etc, nicht das ich nachher was falsches mache und den Hook nicht mehr deinstallieren kann 😃

    Wie gesagt ich werde mich die nächste Zeit mehr mit der WinAPI beschäftigen.
    Aber das Programm würd ich gern schnell fertig haben.

    Danke schonmal!



  • Beitrag zu flaschen Thema srry



  • Hmm.. kann keiner nen Beispiel posten?
    Kann ja sein, dass hier einige was besseres zu tun haben, als komplette Lösungen zu posten, aber das könnte man dann ja noch zusätzlich in die FAQ setzen!

    Kann mir denn mal wenigstens einer sagen, was es mit den uninstall auf sich hat?
    Wird der Hook automatisch deinstalliert oder muss man das selber machen??

    Es gibt doch genug Tools, wo z.B. nen bestimmter Sound läuft, wenn man die F-Tasten drückt.. sobald man den Prozess dann beendet, ist es deaktivert.



  • das passt dann aber nicht mehr in den bereich "DOS und Win32-Konsole" ...
    deine eigentliche frage wurde ja etwas weiter oben beantwortet 😉


Log in to reply