我有这段代码使用SendInput发送按键,但是当我想长按一个键时它不起作用(例如,长按'a'将在记事本中返回'aaaaaaaaa')。

现在,我已经遍及整个Google,可以看到的唯一解决方法是,如果我想长时间按住,则继续发送输入。我不想这样做,因为这只会模拟“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)有什么方法可以成功发送按下和按下信号。最好将密钥发送到Windows,而不仅仅是发送到特定的应用程序。

C)我可以使用一个好的轻量级C++库来处理全局键盘和鼠标模拟吗?

提前致谢! =)

编辑:看一下这篇文章有关我的问题的更多详细信息:http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_20833788.html

最佳答案

重复击键是键盘 Controller 的功能,而不是Windows或SendInput的功能。您当然可以使用计时器来仿真它,重复调用SendInput()。

10-02 03:55