论坛有没有高手帮忙写个键盘HOOK的例子解决方法

论坛有没有高手帮忙写个键盘HOOK的例子
不是简单的将Q改成W
而是将ALT+Q改成W
代码应该不多。。。。。
不知道有人能写出来没???

------解决方案--------------------
如果你只是要求将ALT+Q改成W
不一定要用HOOK啊,弄个全局热键,将热键设置为ALT+Q,然后Sendkeys"w"不就成了?
丰要钩子的话:
'Module1
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 Const WH_KEYBOARD = 2
Public Const VK_SHIFT = &H10
Public Const VK_MENU = &H12
Public hHook As Long
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 (GetKeyState(VK_MENU) And &HF0000000) And wParam = Asc("Q") Then

Form1.Print "你按了Alt+Q,想换成什么,自己换吧"
End If

KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
End If
End Function
 
  
'fORM
Private Sub Form_Load()

hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID)
End Sub
Private Sub Form_Unload(Cancel As Integer)

UnhookWindowsHookEx hHook
End Sub