Kompletten Text mit keybd_event



  • Hallo,
    meine Frage ist ob man mit keybd_event auch einen ganzen Text ausgeben kann. Nehmen wir das wort Hallo. Um das mit Keybd_event auszugeben müsste man ja

    keybd_event(VK_LSHIFT , 0, 0, 0); 
            keybd_event(VkKeyScan('H'),0x9e, 0 , 0);
            keybd_event(VkKeyScan('H'),0x9e, 0 , KEYEVENTF_KEYUP);
            keybd_event(VK_LSHIFT , 0, KEYEVENTF_KEYUP, 0);
            keybd_event(VkKeyScan('a'),0x9e, 0 , 0);
            keybd_event(VkKeyScan('a'),0x9e, 0 , KEYEVENTF_KEYUP);
            keybd_event(VkKeyScan('l'),0x9e, 0 , 0);
            keybd_event(VkKeyScan('l'),0x9e, 0 , KEYEVENTF_KEYUP);
            keybd_event(VkKeyScan('l'),0x9e, 0 , 0);
            keybd_event(VkKeyScan('l'),0x9e, 0 , KEYEVENTF_KEYUP);
            keybd_event(VkKeyScan('o'),0x9e, 0 , 0);
            keybd_event(VkKeyScan('o'),0x9e, 0 , KEYEVENTF_KEYUP);
    

    diesen Code benutzen. Kann man auch direkt einen Text ausgeben ohne jeden Buchstaben einzelln eingeben zu müssen? (Wenn möglich sollte es auch ohne das Handle von dem Fenster in das der Text soll klappen).
    MFG



  • Was ist keybd_event?



  • ????? schrieb:

    Was ist keybd_event?

    Eine unnütze Windows Funktion...

    Sicher kannst du das baue dir einfach einen Wrapper/Funktion!



  • Sry damit kenne ich mich nicht aus kannste das etwas genauer beschreiben?



  • Der einfachheit halber:

    void MyKeyEvent(std::string text)
    {
      for(int i = 0; i < text.length(); ++i)
      {
        keybd_event(VkKeyScan(text[i]),0x9e, 0 , 0);
        keybd_event(VkKeyScan(text[i]),0x9e, 0 , KEYEVENTF_KEYUP);
      }
    }
    

    So ähnlich halt... Für die Eventualitäten von VK`s musst du dir noch etwas einfallen lassen ^^

    Edit: Eine andere Frage, was willst du damit machen? Wofür sollte man das brauchen?



  • Ich woltle einfach nur wissen ob es möglich ist.
    Geht das ganze auch mit PostMessage?

    Also mit PostMessage habe ich es versucht und es sieht bis jetzt so aus:

    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    int main()
    {
        cout << "Taste druecken" << endl;
        getchar();
        Sleep(3000);
        POINT p;
        GetCursorPos(&p);
        HWND fenster=WindowFromPoint(p);
        cout<<"HWND: "<<fenster<<endl;
        PostMessage (fenster, WM_KEYDOWN, 0, 'H');
        Sleep(10000);
    
    }
    

    Aber das geht nicht... Ich weis das ´hier auch nur ein H ausgegeben werden soll aber selbst das geht nicht.. Was ist daran flasch?!



  • Geht auch, aber du verarbeitest die Nachrichten in deinem Beispiel nicht. Mit der Konsole habe ich das aber nie probiert. Du musst die nachrichtenschleife abrufen und brauchst ein Callback. Schaue dir an wie man ein Windowsfenster erstellt.

    Dem Code nach v ermute ich, dass du Unfug machen möchtest.


Anmelden zum Antworten