2017-04-02 15 views
0

模擬空格鍵我有如何在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鍵時被按下。但是,每當我按alt鍵時,我都會收到「PInvokeStackImpalance:」錯誤。

+0

你究竟在努力實現什麼?你是否試圖在特定的編輯框中「鍵入」一個空格,或者你想不管空格鍵會在當時執行什麼操作?基本上,請提供一個完整和清晰的問題解釋。 – jmcilhinney

+0

您可以使用我的[**'InputHelper類**](http://stackoverflow.com/questions/39804079/how-send-lwin-shortcut-key-in-vb-net/39811354#39811354)。 –

+0

這是一個VB6聲明,改用[VB.NET聲明](http://pinvoke.net/default.aspx/user32/keybd_event.html)。 –

回答

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文森特的評論是要走的路,但如果你沒有太多的經驗,只是想要一個quick fix,這應該是罰款,你可能需要但改變周圍有些事情本應希望能讓你走上正軌。