如何在vb.net中模拟空格键

时间:2017-04-02 04:01:24

标签: vb.net

我有

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Public Enum KeyDef
    VK_SPACE = &H20
End Enum
     If My.Computer.Keyboard.AltKeyDown Then
        keybd_event(&H20, 0, 0, 0)
        keybd_event(&H20, 0, KEYEVENTF_KEYUP, 0)
     End If

我想让它模拟按下alt键时按下的空格键。但是我得到了一个" PInvokeStackImbalance:"每当我按下alt键时出错。

1 个答案:

答案 0 :(得分:1)

由于您的问题没有任何活动,因此这是一种更简单的方法来模拟按下alt键时按下的空格键。

首先去Nuget并下载包Input Simulator并将其添加到您的项目中。
添加后,WindowsInput应该可供您导入进入你的项目代码。

请参阅以下示例。

Imports WindowsInput
Public Class Form1
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
    Dim SIM = New WindowsInput.InputSimulator()
    If e.Alt = True Then
        SIM.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.SPACE)
        MessageBox.Show("ALT HAS BEEN PRESSED, SPACEBAR BUTTON PRESSED")
    End If
End Sub
End Class

我相信@Visual Vincent的评论是要走的路,但是如果你没有太多的经验而只想要一个quick fix,这应该没问题,你可能需要改变一些事情但是这应该有希望得到你走在正确的轨道上。