如何 print/press '@' 使用 keybd_event 函数?

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

要按'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/ms646304(v=vs.85).aspx)

尝试以下操作:

  1. 按 Shift
  2. 按 2
  3. 第 2 版
  4. 发布班次

附录

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