我刚写好这段代码:'******************************************************
'
'设置钩子
'
'******************************************************
lngHHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID)
'******************************************************
'
'键盘钩子处理函数
'
'******************************************************Public Function KeyboardProc(ByVal lngIDHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'wParam键盘VirtualKey代码,lParam标志位,标识是否按键仍按着,ATL是否按着,等等扩展信息
'如果是F12+ALT,弹出一“OK”提示
If wParam = VK_F12 And (lParam And &HA0000000) = &HA0000000 Then
MsgBox "OK", vbOKOnly + End IfEnd If
End If
KeyboardProc = CallNextHookEx(lngHHook, lngIDHook, wParam, ByVal lParam)End Function
'
'设置钩子
'
'******************************************************
lngHHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID)
'******************************************************
'
'键盘钩子处理函数
'
'******************************************************Public Function KeyboardProc(ByVal lngIDHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'wParam键盘VirtualKey代码,lParam标志位,标识是否按键仍按着,ATL是否按着,等等扩展信息
'如果是F12+ALT,弹出一“OK”提示
If wParam = VK_F12 And (lParam And &HA0000000) = &HA0000000 Then
MsgBox "OK", vbOKOnly + End IfEnd If
End If
KeyboardProc = CallNextHookEx(lngHHook, lngIDHook, wParam, ByVal lParam)End Function
GetAsyncKeystate(ASCII键值)
如果返回的值小于0,该键是被按下的,你可以用Timer事件随时检测。
在VB中想简单的实现只能按 thirdapple(第三只苹果) 说的做。否则要去写DLL
WM_TIMER消息不受焦点的限制!
http://www.csdn.net/expert/topic/525/525666.xml
[email protected]