我刚写好这段代码:'******************************************************
'
'设置钩子
'
'******************************************************
 
 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

解决方案 »

  1.   

    可以用GetAsyncKeyState函数,
    GetAsyncKeystate(ASCII键值)
    如果返回的值小于0,该键是被按下的,你可以用Timer事件随时检测。
      

  2.   

    sproll(sproll) 代码不行,只对本进程有效
    在VB中想简单的实现只能按 thirdapple(第三只苹果) 说的做。否则要去写DLL
      

  3.   

    thirdapple(第三只苹果)的方法也不行,程序失去焦点时timer控件根本就没用。
      

  4.   

    胡说!失去焦点后Timer 正常工作。
    WM_TIMER消息不受焦点的限制!
      

  5.   

    windows全局钩子,这里有原码,不需要编译成dll
    http://www.csdn.net/expert/topic/525/525666.xml
      

  6.   

    i ve got code
    [email protected]