4

我有这段代码使用 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) 什么是能够成功发送按键向下和按键向上信号的替代方法。最好将密钥发送到 Windows 而不仅仅是特定的应用程序。

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

提前致谢!=)

编辑:看看这篇文章了解我的问题的更多细节:http ://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_20833788.html

4

1 回答 1

4

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

于 2012-05-05T22:43:17.393 回答