SendInput不适用于hold key C ++

时间:2012-05-05 21:16:12

标签: c++ simulator keydown sendinput

我有一些使用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

1 个答案:

答案 0 :(得分:3)

重复击键是键盘控制器的一项功能,而不是Windows或SendInput。您当然可以使用计时器模拟它,重复调用SendInput()。