C++: Tastendruck simulieren



  • Hi,
    ich wollte fragen wie man mit reinem C++ einen Tastendruck simulieren kann.

    LG
    YoshiLion



  • Mit reinem C++: Gar nicht. Das kennt nicht mal Tasten.
    Mit Hilfe einer Systembibliothek, die du durch C++ ansprechen kannst: Frag im entsprechenden Forum nach.
    Wie du es machen solltest: AutoIT



  • So geht es auf Windows.

    //http://msdn.microsoft.com/en-us/library/ms646271.aspx
    //http://msdn.microsoft.com/en-us/library/ms927178.aspx
    
    #include <windows>
    #include <iostream>
    using namespace std;
    
    void Simulate(unsigned KeyInHex);
    
    int main()
    {
    Sleep(1000);  // Wait 1 second (1000ms = 1 second)
    Simulate(0x31);   // 0x31 = Taste 1
    
    return 0;
    }
    void Simulate(unsigned KeyInHex)
    {
    UINT HardwareScanCode ;
    
            HardwareScanCode = MapVirtualKey ( KeyInHex, 0);   // Get the hardware scan code                                                                
            INPUT data; 
            data.type = INPUT_KEYBOARD; 
            data.ki.wVk =     KeyInHex; 
            data.ki.wScan = HardwareScanCode; 
            data.ki.dwFlags = 0; 
            data.ki.time =0; 
            data.ki.dwExtraInfo = 0; 
            SendInput (1 , &data, sizeof(data));  // push the button
            data.ki.dwFlags = KEYEVENTF_KEYUP; 
            SendInput (1 , &data, sizeof(data));   // release the button
      }
    


  • unsigned KeyInHex

    lol 🙂
    Gegenvorschlag:

    void Simulate(UINT virtualKeyCode)
    {
        INPUT data = {};
        data.type = INPUT_KEYBOARD; 
        data.ki.wVk = virtualKeyCode; 
        data.ki.wScan = MapVirtualKey(virtualKeyCode, MAPVK_VK_TO_VSC);   // get the hardware scan code
        SendInput(1, &data, sizeof(data));   // push the button
    
        data.ki.dwFlags = KEYEVENTF_KEYUP; 
        SendInput(1, &data, sizeof(data));   // release the button
    }
    

Anmelden zum Antworten