vb.net

2017-04-02 10 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キーを押すたびに「PInvokeStackImbalance:」エラーが表示されます。

+0

実際に達成しようとしていることは何ですか?特定の編集ボックスにスペースを "入力"しようとしているのですか、それとも何があってもスペースバーがその時に何をしてもかまいませんか?基本的には、問題の完全かつ明確な説明を提供してください。 – jmcilhinney

+0

my [** 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がプロジェクトコードにインポートできるようになります。

次の例を参照してください。私がすべきこれは問題ないはずです、あなたはしかし、この周り代を変更する必要があり、あなたは多くの経験を持っていけないし、ちょうどquick fixをしたいがあれば、@Visualヴィンセントさんのコメントが進むべき道であると信じてい

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 

うまくいけば正しい軌道に乗る。