Hm..naja eigentlich steht da doch schon alles. Also:
Ersteinmal brauchst du diese Funktionen & Variablen (kannst einfach so kopieren - musst nichts ändern):
PHP Code:
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
Diese fügst du z.B. unter "Public Class *NameDerKlasse*"
So, dann fügst du deiner eigenen Form Hotkeys hinzu indem du das Handle deiner Form benutzt (Me.Handle) - am besten fügst du sie gleich beim Starten der Form hinzu, also in das Form_Load-Ereignis. Dazu benutzt du die zuvor oben deklarierte "RegisterHotKey"-Funktion:
PHP Code:
Private Sub DeineForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DeineForm.Load
RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F1)
End Sub
Da wo die 1 steht, kannst du egal welche Zahl einfügen, musst diese später aber wieder benutzen. Als letzten Parameter sagst du deinem Programm für welche Taste das gilt. Also z.B. "Keys.F1", "Keys.F2", "Keys.A", "Keys.B"...
Das ganze kannst du jetzt für alle Tasten die du willst machen:
PHP Code:
RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F1)
RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.F2)
RegisterHotKey(Me.Handle, 3, Key_NONE, Keys.F3)
RegisterHotKey(Me.Handle, 4, Key_NONE, Keys.A)
RegisterHotKey(Me.Handle, 5, Key_NONE, Keys.B)
RegisterHotKey(Me.Handle, 6, Key_NONE, Keys.C)
...
So, dann brauchst du noch die Sub, die auf deine Hotkeys reagiert, nämlich die überschriebene "WndProc":
PHP Code:
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_HOTKEY Then //prüfen ob die "Nachricht" ein Hotkey ist
Select Case m.WParam //wenn es ein Hotkey ist, dann wird mit einer Select-Anweisung geprüft, welches Hotkey das war, dazu benutzt du diese Zahlen von denen ich oben gesprochen habe (in meinem Beispiel war halt die Zahl 1 für die Taste F1 und die Zahl 2 für die Taste F2..)
Case 1 //wenn Zahl 1
MessageBox.Show("F1!") //hier kannst du halt angeben was passieren soll.
Case 2 //wenn Zahl 2
MessageBox.Show("F2!")
Case 3 //wenn Zahl 3
MessageBox.Show("F3!")
End Select
End If
MyBase.WndProc(m)
End Sub
So, und zum Schluss entfernst du die gesetzten Hotkeys einfach wieder, z.B. im Form_Closing-Ereignis (wenn du deine Form schließt):
PHP Code:
Private Sub DeineForm_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles DeineForm.FormClosing
//hier benutzt du die oben deklarierte Funktion "UnregisterHotKey"
UnregisterHotKey(Me.Handle, 1) //hier deine Zahl wieder angeben
UnregisterHotKey(Me.Handle, 2)
...
End Sub
Hier nochmal der gesamte Code (Formname etc. wurde nicht geändert - standard Projekt halt^^). Erstell einfach mal ein neues Projekt, geh in das Codefenster, lösche alles und füg das ein:
PHP Code:
Public Class Form1
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 Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F1)
RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.F2)
RegisterHotKey(Me.Handle, 3, Key_NONE, Keys.F3)
End Sub
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_HOTKEY Then
Select Case m.WParam
Case 1
MessageBox.Show("Die Taste F1 wurde gedrückt!")
Case 2
MessageBox.Show("Die Taste F2 wurde gedrückt!")
Case 3
MessageBox.Show("Die Taste F3 wurde gedrückt!")
End Select
End If
MyBase.WndProc(m)
End Sub
Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
UnregisterHotKey(Me.Handle, 1)
UnregisterHotKey(Me.Handle, 2)
UnregisterHotKey(Me.Handle, 3)
End Sub
End Class
Ein Video kann ich zurzeit nicht machen, hab dafür nicht besonders viel Zeit bzw. Lust..hoffe das hier kann dir auch weiterhelfen.