【发布时间】:2014-11-24 10:38:01
【问题描述】:
所以这是我的问题,我一直在尝试使用sendinput() 函数模拟各种关键事件,我什至编写了函数来模拟复杂的关键事件,例如使用该函数的 winkey+D、alt+f4 等 一切正常,直到我决定尝试使用虚拟键码 VK_RETURN 的回车键返回,这是由 VK 代码的这个不错的 msdn list 提供的,问题是它不起作用
现在,我猜这个回车键可能有 3 个问题,
enter的虚拟键码和pc键盘实际使用的值不一样
代码有问题,错误代码,错误调用等; 我不太确定,因为发送输入适用于到目前为止测试的其余键
回车键、回车键、回车键或其他所谓的键盘键的超级明星都不能像其他按钮那样工作,所以我的代码不适合它
注意:如果它是 1 ,请您启发我如何以编程方式为给定按钮获取键码的正确值,而不依赖于 msdn vk list 等静态资源
这里是我的sn-p
我创建了一个这样的输入结构并将其分配为键盘输入
INPUT Keybord;
Keybord.type = INPUT_KEYBOARD;
Keybord.ki.wScan = 0;
Keybord.ki.time = 0;
Keybord.ki.dwExtraInfo = 0;
在这里我分配了一个按钮 VK,我使用了一个结构,因为我也模拟了复杂的事件
在这种情况下,随后的按键模拟功能可以正常工作并按下一个选项卡
cndex[38].primary = VK_TAB;
现在是麻烦制造者,我这样分配它
cndex[39].primary = VK_RETURN;
这是我的按键功能,第一次调用按下,第二次释放它
void Simple_press(int i){
Keybord.ki.wVk = cndex[i].primary;
Keybord.ki.dwFlags = 0;
SendInput(1, &Keybord, sizeof(INPUT));
Keybord.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &Keybord, sizeof(INPUT));
};
另一个注意事项是我不想使用 sendKeys 功能,它缓慢且 它也不适用于“{ENTER}”参数
【问题讨论】:
-
您要发送的目标是什么?您是否通过在键盘上按下来检查目标是否真的对 RETURN 做出反应?
-
据我所知,发送输入是一个非常接近机器功能的低级别,它几乎可以直接与隐藏驱动程序对话,就像它是一个真正的键盘一样,并且可以在每个目标上全局工作,例如,如果模拟 win+d 一切都会最小化,而且输入键工作得很好,我想我在发布我的问题而无法使用它时会遇到一些问题:?无论如何感谢您的回复
-
如果您发送 VK_RETURN,SendInput 会返回什么?
标签: c++ visual-c++ sendinput