Hallo,
Wichtig:
Dieser Beispiel Code wurde hier nicht gepostet um Illegale Dinge zu treiben.
Falls die Moderatoren oder der Administrator dieses Forums bedenken wegen des Codes haben, mögen Sie diesen Beitrag wieder löschen.
Wie kann ich eine x-beliebige Taste Systemweit abfangen, egal ob meine Anwendung Aktiv ist oder nicht.
Dies geht über einen sogenannten Tastatur Hook.
Dabei wird eine Windows-Message abgefangen, ausgewertet und wie wenn nichts geschehen wäre weitergeleitet.
Beispiel:
EDIT:
Code um einen zweiten Hotkey erweitert.
Gruss
mikeb69
Wichtig:
Dieser Beispiel Code wurde hier nicht gepostet um Illegale Dinge zu treiben.
Falls die Moderatoren oder der Administrator dieses Forums bedenken wegen des Codes haben, mögen Sie diesen Beitrag wieder löschen.
Wie kann ich eine x-beliebige Taste Systemweit abfangen, egal ob meine Anwendung Aktiv ist oder nicht.
Dies geht über einen sogenannten Tastatur Hook.
Dabei wird eine Windows-Message abgefangen, ausgewertet und wie wenn nichts geschehen wäre weitergeleitet.
Beispiel:
VB.NET-Quellcode
- 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
- Protected Overrides Sub WndProc(ByRef m As Message)
- 'die messages auswerten
- If m.Msg = WM_HOTKEY Then
- 'hier wird entschieden welcher hotkey es war
- 'einfach die übergebene id auswerten
- Select Case m.WParam
- Case 1
- MessageBox.Show("Sie haben die Tab-Taste gedrückt!")
- Case 2
- MessageBox.Show("Sie haben die 1 gedrückt!")
- 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
- 'die tab taste wieder freigeben
- 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
- 'die tab taste abfangen
- RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.Tab)
- RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.D1)
- End Sub
- End Class
EDIT:
Code um einen zweiten Hotkey erweitert.
Gruss
mikeb69
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ () aus folgendem Grund: Titel korrigiert