SendInput() Keyboard letters C/C++

前端 未结 4 1413
终归单人心
终归单人心 2020-12-20 13:26

I am trying to use SendInput() to send a sentence to another application (Notepad) and then send it hitting the Enter Key.

Any code snippets?

相关标签:
4条回答
  • 2020-12-20 13:44

    I made a modification after reading @Nathan's code, this reference and combined with @jave.web's suggestion. This code can be used to input characters (both upper-case and lower-case).

    #define WINVER 0x0500
    #include<windows.h>
    void pressKeyB(char mK)
    {
        HKL kbl = GetKeyboardLayout(0);
        INPUT ip;
        ip.type = INPUT_KEYBOARD;
        ip.ki.time = 0;
        ip.ki.dwFlags = KEYEVENTF_UNICODE;
        if ((int)mK<65 && (int)mK>90) //for lowercase
        {
            ip.ki.wScan = 0;
            ip.ki.wVk = VkKeyScanEx( mK, kbl );
        }
        else //for uppercase
        {
            ip.ki.wScan = mK;
            ip.ki.wVk = 0;
    
        }
        ip.ki.dwExtraInfo = 0;
        SendInput(1, &ip, sizeof(INPUT));
    }
    

    Below is the function for pressing Return key:

        void pressEnter()
    {
        INPUT ip;
        ip.type = INPUT_KEYBOARD;
        ip.ki.time = 0;
        ip.ki.dwFlags = KEYEVENTF_UNICODE;
        ip.ki.wScan = VK_RETURN; //VK_RETURN is the code of Return key
        ip.ki.wVk = 0;
    
        ip.ki.dwExtraInfo = 0;
        SendInput(1, &ip, sizeof(INPUT));
    
    }
    
    0 讨论(0)
  • 2020-12-20 13:51
    INPUT input;
    WORD vkey = VK_F12; // see link below
    input.type = INPUT_KEYBOARD;
    input.ki.wScan = MapVirtualKey(vkey, MAPVK_VK_TO_VSC);
    input.ki.time = 0;
    input.ki.dwExtraInfo = 0;
    input.ki.wVk = vkey;
    input.ki.dwFlags = 0; // there is no KEYEVENTF_KEYDOWN
    SendInput(1, &input, sizeof(INPUT));
    
    input.ki.dwFlags = KEYEVENTF_KEYUP;
    SendInput(1, &input, sizeof(INPUT));
    

    List of virtual key codes .....

    0 讨论(0)
  • 2020-12-20 13:58

    The SendInput function accepts an array of INPUT structures. The INPUT structures can either be a mouse or keyboard event. The keyboard event structure has a member called wVk which can be any key on the keyboard. The Winuser.h header file provides macro definitions (VK_*) for each key.

    0 讨论(0)
  • 2020-12-20 13:59

    Theres a simple C++ sample here http://nibuthomas.wordpress.com/2009/08/04/how-to-use-sendinput/

    And a more complete VB sample here http://vb.mvps.org/samples/SendInput/

    0 讨论(0)
提交回复
热议问题