Hi quat!
Nur zur Info: Für einen LowLevel KeyboardHook brauchst du keine dll zu programmieren.
Hier ein kleiner Beispielcode für einen Hook in vb6:
Option Explicit
Private Const WH_KEYBOARD_LL = 13&
Private Const HC_ACTION = 0&
Private Type KBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Private Declare Function SetWindowsHookEx Lib "user32" Alias _
"SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As _
Long, ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) _
As Long
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As _
Any, pSource As Any, ByVal cb As Long)
Public m_hDllKbdHook As Long
Public Function HookKeyboard() As Long
m_hDllKbdHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf _
LowLevelKeyboardProc, App.hInstance, 0&)
HookKeyboard = m_hDllKbdHook
End Function
Public Sub UnHookKeyboard()
UnhookWindowsHookEx (m_hDllKbdHook)
End Sub
Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Static kbdllhs As KBDLLHOOKSTRUCT
If nCode = HC_ACTION Then
Call CopyMemory(kbdllhs, ByVal lParam, Len(kbdllhs))
If kbdllhs.flags = 128 Then
Form1.Label1.Caption = kbdllhs.vkCode
End If
End If
LowLevelKeyboardProc = CallNextHookEx(m_hDllKbdHook, nCode, wParam, lParam)
'LowLevelKeyboardProc = 1 'Hiermit wird der Input nicht weitergegeben
End Function
Public Sub Main()
m_hDllKbdHook = HookKeyboard
Form1.Show
End Sub Das ganze kommt einfach in ein Modul rein. Der Hook funktioniert natürlich nur, solange die Anwendung läuft. Der Vorteil einer dll ist, dass man den Hook am Anfang einmal setzt und dann alles von alleine läuft, ohne dass das eigene Programm die Inputs verarbeiten muss, da alles von der dll übernommen wird. Noch ein Hinweis: Vergiss nie, vor beenden deiner Anwendung UnHookKeyboard() aufzurufen.
Bye,
Hawker |