我有
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键时出错。
答案 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
,这应该没问题,你可能需要改变一些事情但是这应该有希望得到你走在正确的轨道上。