如何使用keybd_event功能打印/按'@'?

How to print/press '@' using keybd_event function?

本文关键字:打印 keybd 何使用 event 功能      更新时间:2023-10-16

按'a'代码是

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/mms646304(v = vs.85).aspx)

尝试以下内容:

  1. 按Shift
  2. 按2
  3. 版本2
  4. 释放Shift

附录

我刚刚检查了我自己做同样事情的代码... 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