我有一些使用SendInput发送按键的代码,但是当我想长按一个键时它不起作用(例如长按'a'会在记事本中返回'aaaaaaaa')。
现在我已经浏览了整个谷歌,我能看到解决这个问题的唯一方法是继续发送输入,如果我想要长时间保持。我不想这样做,因为这只会模拟'a'一次又一次地被按下。
keyboard.wVk = 0;
keyboard.wScan = MapVirtualKey(key, 0);
keyboard.dwFlags = KEYEVENTF_SCANCODE;
if (index_vector_no)
pressed[index_vector_no] = true;
keyboard.dwExtraInfo = 0;
input.type = INPUT_KEYBOARD;
input.ki = keyboard;
SendInput(1, &input, sizeof (input));
所以我想对以下问题给出一些答案:
A)我是否正确地认为使用SendInput无法解决这个问题,为什么长时间保持不起作用呢?
B)成功发送按键和按键信号的替代方法是什么。最好将密钥发送到窗口而不仅仅是特定的应用程序。
C)我可以使用一个很好的轻量级C ++库来处理全局键盘和鼠标模拟吗?
提前致谢! =)
编辑:请看一下这篇文章,了解我的问题的更多细节:http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_20833788.html
答案 0 :(得分:3)
重复击键是键盘控制器的一项功能,而不是Windows或SendInput。您当然可以使用计时器模拟它,重复调用SendInput()。