如何打印/按' @'使用keybd_event函数?

时间:2015-05-06 17:32:57

标签: c++ windows keyboard-events keystroke

要按'代码是

keybd_event(VkKeyScan(64),0,0,0);

发布密钥代码

keybd_event(VkKeyScan(64),0,KEYEVENTF_KEYUP,0);

按下' @'我需要两个键的组合 - SHIFT& 2,但我不知道如何。

keybd_event(https://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

  1. 按Shift
  2. 按2
  3. 第2版
  4. 释放班次
  5. <强>附录

    我刚检查了自己的代码,我做了同样的事情...... keybd_event已被弃用(如您关联的网站所述),您应该使用SendInput代替。

    这是我发送按键和释放的两个功能:

    void sendKeyDown(unsigned char keyCode)
    {
        INPUT input;
        input.type = INPUT_KEYBOARD;
    
        input.ki.wVk = keyCode;
        input.ki.dwFlags = 0;
        input.ki.time = 0;
        input.ki.dwExtraInfo = 0;
    
        SendInput(1, &input, sizeof(INPUT));
    }
    
    void sendKeyUp(unsigned char keyCode)
    {
        INPUT input;
        input.type = INPUT_KEYBOARD;
    
        input.ki.wVk = keyCode;
        input.ki.dwFlags = KEYEVENTF_KEYUP;
        input.ki.time = 0;
        input.ki.dwExtraInfo = 0;
    
        SendInput(1, &input, sizeof(INPUT));
    }
    

    然后这应该给你一个@

    sendKeyDown(VK_SHIFT);
    sendKeyDown(0x32);
    sendKeyUp(0x32);
    sendKeyUp(VK_SHIFT);
    

    请检查0x32,我目前无法可靠地将其作为密钥2进行测试。