问一下怎样用VB才能做键盘全局HOOK,我把下面的代码封进标准的DLL为什么不行,我把封装的代码改为VB的就是这样。
----------------------------------------------
Private Const WH_KEYBOARD As Long = 2Private Declare Function SetWindowsHookEx Lib "user32.dll" 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.dll" (ByVal hHook As Long) As Long
Private Declare Function CallNextHookEx Lib "user32.dll" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As LongDim OldHook As Long
Dim StrSave As StringPrivate Sub Main()
   
End SubPublic Function SetHook(LngAddressHook As Long, LnghInstance As Long) As Long
 OldHook = SetWindowsHookEx(WH_KEYBOARD, LngAddressHook, LnghInstance, 0)
End FunctionPublic Sub UnloadHook()
 UnhookWindowsHookEx OldHook
End SubPublic Function KeyBoardHook(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
   KeyBoardHook = CallNextHookEx(OldHook, nCode, wParam, ByVal lParam)End FunctionPublic Sub Save()
 Dim IntFile As Integer
MsgBox "save"
 IntFile = FreeFile
  Open "c:\Key.txt" For Output As #IntFile
    Print #IntFile, StrSave & "ok"
  Close #IntFile
   StrSave = ""
End Sub
-----------------------------------------------
 下面是我程序中的代码:
Private Sub Form_Load()
 LngHdll = LoadLibrary(App.Path & "\KeyHook.dll")
 LngAddressHook = GetProcAddress(LngHdll, "KeyBoardHook")
 LngRet = SetHook(LngAddressHook, LngHdll)
end subPrivate Sub Form_Unload(Cancel As Integer)
 FreeLibrary LngHdll
 Call UnhookWindowsHookEx(OldHook)
  Save
End Sub
-------------------------------------------------------
  请问个位大哥,为什么这样也只能监视本程序的按键,而不是全局的。请指教!!!