我正在尝试使用以下代码模拟回车键:
keybd_event(VK_RETURN , 0, 0, 0);
keybd_event(VK_RETURN , 0, KEYEVENTF_KEYUP, 0);
它在我的 32 位 Windows XP 操作系统中运行良好,但是当我在 Windows 8 x64 机器上尝试时,模拟的是空格键而不是回车键。
我应该怎么做才能得到正确的结果?
我也尝试使用如下所示的 SendInput,但我遇到了同样的问题。
void typeKey(short virtualKey)
{
INPUT ip;
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0;
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
ip.ki.wVk = virtualKey; // virtual-key code for the character
ip.ki.dwFlags = 0;
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &ip, sizeof(INPUT));
}
//function call
typeKey(VK_RETURN);
注意:我在 XP 机器上编译一个 32 位可执行文件,并在 Windows 8 上使用相同的可执行文件。
最佳答案
这只是一个有根据的猜测,但您的旧函数使用的参数类型的长度从 x86 到 x64 不等。这可能是个问题。听文档说:
Note This function has been superseded. Use SendInput instead.
关于c++ - keybd_event 表现出奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23380216/