Ich habe hier eine Funktion, mit welcher man per Knopfdruck einen Befehl im Programm ausführen kann.
Die Methode sieht folgendermaßen aus:
Nur möchte ich das ganze mit Benutzerdefinierten Keys machen, sprich ich möchte mit einer My.settings Einstellung den Key angeben welcher gewünscht ist. In einer ComboBox kann man auswählen welchen Knopf den Effekt auslösen soll.
Habe es dann folgendermaßen versucht umzusetzen :
Leider hat es so nicht funktioniert. Hat jemand eine Idee wie das gehen könnte?
Die Methode sieht folgendermaßen aus:
VB.NET-Quellcode
- #Region "Global"
- ' Was brauche ich für globale Hotkeys?
- '- Die unten aufgeführten Deklarationen
- '- Im Load Event der Sub, der die Hotkeys registriert!
- '- WndProc Sub, der die Messages abfängt
- 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 Const Key_NONE As Integer = &H0
- Private Const WM_HOTKEY As Integer = &H312
- Private Const MOD_ALT = &H1
- Private Const MOD_CONTROL = &H2
- Private Const MOD_SHIFT = &H4
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F2)
- RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.F3)
- RegisterHotKey(Me.Handle, 3, Key_NONE, Keys.F4)
- RegisterHotKey(Me.Handle, 4, Key_NONE, Keys.F5)
- End Sub
- Protected Overrides Sub WndProc(ByRef m As Message)
- If m.Msg = WM_HOTKEY Then
- Select Case m.WParam
- Case 1
- label1.text = "Hallo"
- Case 2
- label2.text = "Hallo"
- Case 3
- label3.text = "Hallo VB.net Paradise"
- Case 4
- msgbox("Hallo")
- End Select
- End If
- MyBase.WndProc(m)
- End Sub
- #End Region
Nur möchte ich das ganze mit Benutzerdefinierten Keys machen, sprich ich möchte mit einer My.settings Einstellung den Key angeben welcher gewünscht ist. In einer ComboBox kann man auswählen welchen Knopf den Effekt auslösen soll.
Habe es dann folgendermaßen versucht umzusetzen :
VB.NET-Quellcode
- #Region "Global"
- ' Was brauche ich für globale Hotkeys?
- '- Die unten aufgeführten Deklarationen
- '- Im Load Event der Sub, der die Hotkeys registriert!
- '- WndProc Sub, der die Messages abfängt
- 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 Const Key_NONE As Integer = &H0
- Private Const WM_HOTKEY As Integer = &H312
- Private Const MOD_ALT = &H1
- Private Const MOD_CONTROL = &H2
- Private Const MOD_SHIFT = &H4
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- RegisterHotKey(Me.Handle, 1, Key_NONE, Keys = My.settings.A1)
- RegisterHotKey(Me.Handle, 2, Key_NONE, Keys = My.settings.A2)
- RegisterHotKey(Me.Handle, 3, Key_NONE, Keys = My.settings.A3)
- RegisterHotKey(Me.Handle, 4, Key_NONE, Keys = My.settings.A4) '
- End Sub
- Protected Overrides Sub WndProc(ByRef m As Message)
- If m.Msg = WM_HOTKEY Then
- Select Case m.WParam
- Case 1
- label1.text = "Hallo"
- Case 2
- label2.text = "Hallo"
- Case 3
- label3.text = "Hallo VB.net Paradise"
- Case 4
- msgbox("Hallo")
- End Select
- End If
- MyBase.WndProc(m)
- End Sub
- #End Region
Leider hat es so nicht funktioniert. Hat jemand eine Idee wie das gehen könnte?