【发布时间】:2014-03-29 02:25:32
【问题描述】:
我正在制作一个程序,其中 c++ 为我自动按下键盘上的键。我用键盘上的每个键都做到了这一点。除非我尝试使用方括号'[',否则它工作得很好。如果我告诉计算机打印出方括号,它会按预期打印出方括号,但它也会按下 Windows 开始按钮,因此打开开始菜单?经过一些调试,我发现开始菜单仅在使用 SendInput 功能释放键后才弹出,而不是在按下它时弹出。所以我的问题是为什么会这样? PS 在任何人问之前,我的代码对于每个键都是 100% 正确的,所以我知道我使用的方法是有效的。
ip.ki.wVk = VK_OEM_4; // this is the '[' key
ip.ki.dwFlags = 0;
SendInput(1, &ip, sizeof(INPUT)); // the key has been pressed
ip.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT)); // the key is released, THE START MENU POPS UP!
【问题讨论】:
-
你在使用 WinAPI 吗?也许您也应该放置按键事件,Windows 需要它来释放按键
-
这些都是戳键的变幻莫测,你很容易成为键盘状态的受害者。按 Ctrl+[ 是一种生成 Escape 控制代码的方法。并且 Ctrl+Escape 激活“开始”菜单。类似的东西。
-
请提供更多代码。可能结构设置不正确。
标签: c++ visual-c++ virtual-keyboard