Скачал примерчик отсель:
http://www.vbnet.ru/samples/download.aspx?id=551
Туплю, не могу понять, как и какую функцию заставить
передать мне в прогу отловленный код клавиши.
Дабы не ползать особо по ссылке, вот код dll:
Public Const WH_KEYBOARD = 2
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
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
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public hHook As Long, hinst As Long, oldParam As Long
Function DLLMain(ByVal A As Long, ByVal B As Long, ByVal c As Long) As Long
hinst = A
DLLMain = 1
End Function
Function SetGlobalHook() As Long
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, hinst, 0)
SetGlobalHook = hHook
End Function
Sub Main()
'игнорируем...
End Sub
Function UnSetGlobalHook() As Long
UnhookWindowsHookEx hHook
End Function
Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If idHook < 0 Then
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
Else
'Просто логируем все в файл
If oldParam <> wParam Then
oldParam = wParam
Open "C:\hooked.txt" For Append As #1
Print #1, Chr(wParam);
Close #1
End If
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
End If
End Function
само-собой, что запись в файл мне нахрен не нужна,
а нужна передача КОДА клавиши мою программу.
Ответить
|