string in Tastendrücke umwandeln



  • Hallo, ich wollte mir eine funktion schreiben, der ich einen string übergebe. Diese Funktion soll dann die einzelnen Zeichen als Tastendrücke ausgeben. Im Moment mache ich das so:

    void druecken(const char* text)
    {
        for( ; *text; ++text)
        {
            switch (*text)
            {
               case 'a': keybd_event(VkKeyScan('a'),0x9e,0 , 0);
                         keybd_event(VkKeyScan('a'),0x9e, KEYEVENTF_KEYUP,0);
                         break;
               case 'b': keybd_event(VkKeyScan('b'),0xB0,0 , 0);
                         keybd_event(VkKeyScan('b'),0xB0, KEYEVENTF_KEYUP,0);
                         break;
               // usw
            }
        }
    }
    

    Das ganze ist natürlich sehr aufwändig aber machbar. Schwerer ist es, wenn es sich um Großbuchstaben handelt. Dann kann man ja einfach Shift dazu drücken lassen. Wenn es sich aber um Sonderzeichen handelt, muss man ja dazu zB Alt oder was auch immer drücken. Zudem ist das ja dann abhängig von der Ländereinstellung der Tastatur.
    Gibt es eine andere Möglichkeit, Tastendrücke in Abhängigkeit von zB. char auszulösen? (Es müssten schon Tastendrücke sein, also in Zwischenablage kopieren und strg+V zB geht nicht ;). Und es ist "nur" ASCII, kein unicode/wide char )



  • Ob du jetzt 'a' oder 'b' oder gleich die Variable text die den char enthält angibst sollte doch keinen Unterschied machen? Also gib einfach mal text an



  • Ja das geht schon.

    void druecken(const char* text)
    {
        for( ; *text; ++text)
        {
           keybd_event(VkKeyScan(*text), 0, 0 , 0);
           keybd_event(VkKeyScan(*text), 0, KEYEVENTF_KEYUP,0);
        }
    }
    

    Bloß werden hier bei Großbuchstaben nur Kleinbuchstaben erzeugt (weil kein Shift dazu gedrück wird). Bei '@' zB wird nur "q" gedrückt, weil kein Alt dazugedrückt wird. Weis jemand, ob das überhaupt so realisierbar ist?




Log in to reply