DerStauner
Erfahrenes Mitglied
Hallo!
Ich habe folgendes Problem:
ich habe ein hotkeys Class, mit dessen Hilfe ich Hotkeys global registrieren kann. Funktioniert auch wunderschön. Dazu der Code:
Im fett gedruckten Bereich kann ich bestimmen, was passiert, wenn ein globales Hotkey gedrückt wird.
Die Hotkeys registriere ich so (z. B. im Load Event des Forms):
Damit sind die Keys "A" und "B" registriert. Mit einem Notifyicon schicke ich das Programm ins Tray, und wenn ich jetzt A oder B drücke, kommt ein MsgBox auf.
Aber wie kann ich abfragen, welche Taste von den beiden gedrückt wurde? So, dass Z. B. der MsgBox sagt: Die Taste "A" wurde gedrückt.
Danke.
Ich habe folgendes Problem:
ich habe ein hotkeys Class, mit dessen Hilfe ich Hotkeys global registrieren kann. Funktioniert auch wunderschön. Dazu der Code:
Code:
Public Class hotkeys
Inherits System.Windows.Forms.Form
Private Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As IntPtr, _
ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As _
Integer
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As _
IntPtr, ByVal id As Integer) As Integer
Private Declare Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" _
(ByVal lpString As String) As Short
Private Declare Function GlobalDeleteAtom Lib "kernel32" (ByVal nAtom As _
Short) As Short
Public Class MODKeys
Public Const MOD_ALT As Integer = 1
Public Const MOD_CONTROL As Integer = 2
Public Const MOD_SHIFT As Integer = 4
Public Const MOD_WIN As Integer = 8
End Class
Dim hotkeyID As Short
Public Sub New(ByVal sKey As System.Windows.Forms.Keys, Optional ByVal _
Modulate As Long = 0)
RegisterGlobalHotKey(sKey, Modulate)
End Sub
Private Sub RegisterGlobalHotKey(ByVal hotkey As System.Windows.Forms.Keys, _
ByVal modifiers As Integer)
Try
Dim atomName As String = _
AppDomain.GetCurrentThreadId.ToString("X8") & Me.Name
hotkeyID = GlobalAddAtom(atomName)
RegisterHotKey(Me.Handle, hotkeyID, modifiers, CInt(hotkey))
Catch ex As Exception
UnregisterGlobalHotKey()
End Try
End Sub
Private Sub UnregisterGlobalHotKey()
If Me.hotkeyID <> 0 Then
UnregisterHotKey(Me.Handle, hotkeyID)
GlobalDeleteAtom(hotkeyID)
hotkeyID = 0
End If
End Sub
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
Const WM_HOTKEY As Integer = &H312
If m.Msg = WM_HOTKEY Then
MsgBox("Hotkey wurde gedrückt.")
End If
End Sub
End Class
Im fett gedruckten Bereich kann ich bestimmen, was passiert, wenn ein globales Hotkey gedrückt wird.
Die Hotkeys registriere ich so (z. B. im Load Event des Forms):
Code:
Dim HotKeyElement As New hotkeys(Keys.A)
Dim HotkeyElement1 As New hotkeys(Keys.B)
Damit sind die Keys "A" und "B" registriert. Mit einem Notifyicon schicke ich das Programm ins Tray, und wenn ich jetzt A oder B drücke, kommt ein MsgBox auf.
Aber wie kann ich abfragen, welche Taste von den beiden gedrückt wurde? So, dass Z. B. der MsgBox sagt: Die Taste "A" wurde gedrückt.
Danke.