模拟按下键一段时间

时间:2016-02-19 10:25:26

标签: vb.net sendmessage sendkeys keystroke

基本上我一直在寻找能够模拟按下按钮并释放按钮的代码。

我尝试过两个解决方案(keybd_event,sendmessage),但没有一个解决方案。

    Const VK_W As Byte = &H57 'W key

    keybd_event(VK_W, 0, 0, 0) ' Generates a KEY_DOWN
    Threading.Thread.Sleep(1500) '
    Const KEYEVENTF_KEYUP As Byte = &H2
    keybd_event(VK_W, 0, KEYEVENTF_KEYUP, 0) 'Generates a KEY_UPenter code here

这只是一个单一的" w" 1.5秒后按键。 应该发生的事情就像" wwwwwwwwwwwwwwwwww"。

我希望该计划能够注册下来" w"设定持续时间为秒。

(请不要建议我使用sendkeys,因为我正在通过使用sendkeys发送单击键来处理一个无法可靠运行的程序。)

程序将处于前台,而不是最大化,并且该程序将注册鼠标输入而不会被聚焦。

谢谢。

1 个答案:

答案 0 :(得分:0)

1000毫秒会给你10个W,这似乎是合理的。

[这是伪代码]:

Private Sub iKeyDown(ByVal vKey As Keys)_
    keybd_event(CByte(vKey), 0, KEYEVENTF_EXTENDEDKEY, 0)
End Sub

Private Sub something(...)
    iKeyDown(Keys.W)
    ' start timer to release the "W" key in 1 sec.
    Timer1.Interval = 1000
    Timer1.Start()
End Sub

Private Sub Timer1_Tick

    Timer1.Stop()
    ' release the "W" key!
    iKeyUp(Keys.W)
 End Sub

如果您要使用控制台,请参阅timer class选项。