如何用VB拦截windows中所有的键盘输入(好难的...)
dusj 2000-05-26 03:09:00 在程序中需要拦截处理所有的键盘输入,而不管当前激活窗口是哪一个.我用了如下代码:
但只有在该窗口激活时才能执行keyboardproc,如何才能得到在桌面上或记事本(等等其他程序)中的键盘输入呢?
是否需要编写DLL库呢?请给出详细的函数原型. thank you.
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public 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
Global hHook As Long
Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As _
Long, ByVal lParam As Long) As Long
If nCode >= 0 Then
Form1.List1.AddItem "keyPressed"
End If
KeyboardProc = CallNextHookEx(hHook, nCode, wParam, lParam)
End Function
Private Sub Form_Load()
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, _
0&, App.ThreadID)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call UnhookWindowsHookEx(hHook)
End Sub