如何在C#中使用keybd_event按住键

时间:2019-03-20 13:53:43

标签: c# keyboard

我目前正在尝试开发一个应用程序,使用户可以将击键发送到特定程序。我已经可以发送密钥并按住特定的密钥了,

[DllImport("user32.dll", SetLastError = true)]        
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

keybd_event(key, 0, 0, 0); //Start holding the key down
keybd_event(key, 0, KEY_UP_EVENT, 0); //Stop holding the key down

在发送字母时按住Shift键可以将它们大写。 但是,如果我按住一个字母(例如,将其发送到记事本),则只需写一次该字母。如果我用物理键盘做同样的事情,它将开始写字母,直到我放开手。有没有人提示或提示我该如何处理?

我已经尝试过秒表,但是那也不起作用。

1 个答案:

答案 0 :(得分:0)

感谢@RaymondChen,已经回答了这个问题。

  

物理键盘具有称为“打字”的功能,该功能可以自动重复按下的字符。您也必须效仿。

如果要模拟重复击键,只需发送多个KeyDown和KeyUP事件。