Hi
Hier di Lösung für Ctrl - S und Ctrl - A (unproffessionelle, aber läuft)
'Form:
Private Sub Form_Load()
' Ersten Systemweiten eindeutigen Wert generieren lassen
glHotKeyAtom = GlobalAddAtomA(CStr(&HBFFF))
' Hotkey systemweit registrieren.
' Hier "Strg + S"
If RegisterHotKey(Me.hWnd, glHotKeyAtom, MOD_CONTROL, _
VK_S) = 0 Then
MsgBox "RegisterHotKey() fehlgeschlagen" & vbCr & _
"Fehlercode: " & CStr(GetLastError()), vbExclamation
End
Else
End If
'############################################
' Zweiten Systemweiten eindeutigen Wert generieren lassen
glHotKeyAtom = GlobalAddAtomA(CStr(&HBF))
' Hotkey systemweit registrieren.
' Hier "Strg + A"
If RegisterHotKey(Me.hWnd, glHotKeyAtom, MOD_CONTROL, _
VK_A) = 0 Then
MsgBox "RegisterHotKey() fehlgeschlagen" & vbCr & _
"Fehlercode: " & CStr(GetLastError()), vbExclamation
End
Else
' Wenn Hotkeys registriert werden konnten,
' wird jetzt die Fensterprozedur umgeleitet,
' um die WM_HOTKEY Message abfragen zu können
glAddressOfHotKeyPrevWndProc = SetWindowLong(Me.hWnd, _
GWL_WNDPROC, AddressOf HotkeyWndProc)
End If
End Sub
'Modul:
Option Explicit
Public Const WM_HOTKEY = &H312
Public Const GWL_WNDPROC = (-4)
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const VK_F12 = &H7B
Public Const VK_A = &H41
Public Const VK_S = &H53
Public Declare Function RegisterHotKey Lib "user32" _
(ByVal hWnd As Long, ByVal id As Long, _
ByVal fsModifiers As Long, ByVal vk As Long) As Long
Public Declare Function UnregisterHotKey Lib "user32" _
(ByVal hWnd As Long, ByVal id As Long) As Long
Public Declare Function GetLastError Lib "kernel32" () _
As Long
Public Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function GlobalAddAtomA Lib "kernel32" _
(ByVal lpString As String) As Long
Public Declare Function GlobalDeleteAtom Lib "kernel32" _
(nAtom As Long) As Long
Public glAddressOfHotKeyPrevWndProc As Long
Public glHotKeyAtom As Long
Public Function HotkeyWndProc(ByVal lHwnd As Long, _
ByVal lMsg As Long, ByVal lwParam As Long, _
ByVal lParam As Long) As Long
If lMsg = WM_HOTKEY Then
If lParam = "5439490" Then MsgBox "111111"
If lParam = "4259842" Then MsgBox "222222"
End If
' !WndProc aufrufen und Rückgabewert durchreichen!
HotkeyWndProc = CallWindowProc(glAddressOfHotKeyPrevWndProc, _
lHwnd, lMsg, lwParam, lParam)
End Function Cu |