[VB.2010] Problem mit Tastatur Hook

04/26/2012 20:02 NLH#1
Hallo,
Ich hab einen Code gefunden, welcher normale Tasten und Tastenkombis hookt.
Es funktioniert auch.
Doch bei der Tastenkombi Strg+1 ( und auch anderen Strg Kombis) buggt es ein wenig.
Es soll bei Tastendruck "bla" schreiben. Doch es wird nur einmal geschriben und dannach buggt der Hotkey...
Statt bla zu schreiben, wird nur strg+b, strg+l, strg+a gesendet..

hier der Code:

Code:
Public Class frmKeytest
    Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer
    Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer)
    Private Const Key_NONE As Integer = &H0
    Private Const WM_HOTKEY As Integer = &H312
    Private Const MOD_ALT As Integer = &H1
    Private Const MOD_CONTROL As Integer = &H2
    Private Const MOD_SHIFT As Integer = &H4
    Private Const MOD_WIN As Integer = &H8

    Protected Overrides Sub WndProc(ByRef m As Message)
        If m.Msg = WM_HOTKEY Then
            Select Case m.WParam
                Case 1
                    MessageBox.Show("Du hast Tab gedrückt")
                Case 2
                    SendKeys.Send("bla")
                    'MessageBox.Show("die Msgbox geht")
            End Select
        End If
        MyBase.WndProc(m)
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        UnregisterHotKey(Me.Handle, 1)
        UnregisterHotKey(Me.Handle, 2)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.Tab)
        RegisterHotKey(Me.Handle, 2, MOD_CONTROL, Keys.D1)
    End Sub
End Class
04/26/2012 20:39 HaraltPotter#2
Schreib das ganze mal in C++, ist zwar ne blöde antwort aber mit meinen buggy programms hat es mir weitergeholfen..
04/27/2012 15:27 !llu#3
Quote:
Originally Posted by HaraltPotter View Post
Schreib das ganze mal in C++, ist zwar ne blöde antwort aber mit meinen buggy programms hat es mir weitergeholfen..
Er hat 2 Wege.
1. Er kann auf seine VB Kentnisse verzichten und eine andere Sprache lernen und das ganze dann da schreiben.
Das lernen dieser Sprache dauert wiederrum sehr lang.
2. Man wartet bis hier jemand eine sinnvolle Antwort postet und kann solange weiter an seinem Programm arbeiten.
-
Ich bevorzuge Variante 2.
-
@TE : Hast du den Source selbst gemacht?
05/06/2012 22:22 NLH#4
Quote:
Originally Posted by DarkAzrail View Post
@TE : Hast du den Source selbst gemacht?
Sorry, dass ich erst jetzt antworte, nein ich habs nicht selbst gemacht.
Ich habs aus einem [Only registered and activated users can see links. Click Here To Register...] und hab noch modifikations keys hinzugefügt