【发布时间】:2012-02-10 19:31:32
【问题描述】:
我有类似的东西:
void generateKeybdEvent(int vk, bool extended) {
KEYBDINPUT kb = {0};
INPUT Input = {0};
if ( extended )
kb.dwFlags = KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
ZeroMemory(&kb, sizeof(KEYBDINPUT));
ZeroMemory(&Input, sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
if ( extended )
kb.dwFlags |= KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
}
当我发送输入“A”、CapsLock、“A”时:
generateKeybdEvent ('A', false);
generateKeybdEvent (VK_CAPITAL, true);
generateKeybdEvent ('A', false);
唯一的效果是我的数字锁切换了。
为什么我不能向应用发送字符或数字?
注意我使用的是带有波兰语键盘布局的 Windows 7 和带有 MinGW 的 Qt。
【问题讨论】: