我使用的是 Windows 7 Ultimate 64 位。这是我在网上偶然发现的一个功能,以前使用没有问题,但现在我遇到了问题。不管我向它发送什么字符,它只会发送一个正斜杠击键 /。 这是函数:
void GenerateKey(int vk, BOOL bExtended)
{
KEYBDINPUT kb = {0};
INPUT Input = {0};
/* Generate a "key down" */
if (bExtended) { kb.dwFlags = KEYEVENTF_EXTENDEDKEY; }
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
/* Generate a "key up" */
ZeroMemory(&kb, sizeof(KEYBDINPUT));
ZeroMemory(&Input, sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
if (bExtended) { kb.dwFlags |= KEYEVENTF_EXTENDEDKEY; }
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
return;
}
我是这样调用它的: GenerateKey('x', FALSE);
但是,我得到的不是 x,而是 /。任何人都可以看到出了什么问题吗? 我正在使用 Visual Studio 2008。
最佳答案
KEYBDINPUT.wVk 是虚拟键码,不是 ascii 字符。
http://msdn.microsoft.com/en-us/library/ms646271(v=vs.85).aspx
关于C++ 发送击键疑难解答,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5202118/