资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

如何在窗体中监听F1-F12功能键阿

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

如何在窗体中监听F1-F12功能键阿!可否给出代码,不胜感谢!

网友回答:

发表者:dongge2000

Option   Explicit  
  Public   Declare   Function   GetWindowLong   Lib   "user32"   Alias   "GetWindowLongA"   (ByVal   hwnd   As   Long,   ByVal   nIndex   As   Long)   As   Long  
  Public   Declare   Function   SetWindowLong   Lib   "user32"   Alias   "SetWindowLongA"   (ByVal   hwnd   As   Long,   ByVal   nIndex   As   Long,   ByVal   dwNewLong   As   Long)   As   Long  
  Declare   Function   CallWindowProc   Lib   "user32"   Alias   "CallWindowProcA"   (ByVal   lpPrevWndFunc   As   Long,   ByVal   hwnd   As   Long,   ByVal   Msg   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long  
  Declare   Function   RegisterHotKey   Lib   "user32"   (ByVal   hwnd   As   Long,   ByVal   id   As   Long,   ByVal   fsModifiers   As   Long,   ByVal   vk   As   Long)   As   Long  
  Declare   Function   UnregisterHotKey   Lib   "user32"   (ByVal   hwnd   As   Long,   ByVal   id   As   Long)   As   Long  
   
  Public   Const   WM_HOTKEY   =   &H312  
  Public   Const   MOD_CONTROL   =   &H2  
  Public   Const   GWL_WNDPROC   =   (-4)  
   
  Public   hWndLong(1   To   2)   As   Long  
  Public   Modifiers   As   Long,   uVirtKey   As   Long,   idHotKey   As   Long  
  Dim   S1   As   Long  
  Dim   S2   As   Long  
  Public   Function   WndProc(ByVal   hwnd   As   Long,   ByVal   Msg   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long  
          If   Msg   =   WM_HOTKEY   Then  
                  Select   Case   wParam  
                          Case   1&  
                                  MsgBox   "F1"  
                          Case   2&  
                                  MsgBox   "F2"  
                  End   Select  
          End   If  
           
          If   wParam   =   1&   Then  
                  WndProc   =   CallWindowProc(hWndLong(1),   hwnd,   Msg,   wParam,   lParam)  
          Else  
                  WndProc   =   CallWindowProc(hWndLong(2),   hwnd,   Msg,   wParam,   lParam)  
          End   If  
  End   Function  
  ==================================  
  Option   Explicit  
   
  Sub   UnHook(ByVal   hWnd1   As   Long,   ByVal   hWnd2   As   Long)  
          Dim   ret   As   Long  
          ret   =   SetWindowLong(hWnd1,   GWL_WNDPROC,   hWndLong(1))  
          Call   UnregisterHotKey(hWnd1,   uVirtKey)  
          ret   =   SetWindowLong(hWnd2,   GWL_WNDPROC,   hWndLong(2))  
          Call   UnregisterHotKey(hWnd2,   uVirtKey)  
  End   Sub  
   
  Sub   RegHook(ByVal   hWnd1   As   Long,   ByVal   hWnd2   As   Long)  
          Dim   ret   As   Long  
           
          hWndLong(1)   =   GetWindowLong(hWnd1,   GWL_WNDPROC)  
          ret   =   SetWindowLong(hWnd1,   GWL_WNDPROC,   AddressOf   WndProc)  
          idHotKey   =   1  
          Modifiers   =   0&  
          uVirtKey   =   vbKeyF1  
          ret   =   RegisterHotKey(hWnd1,   idHotKey,   Modifiers,   uVirtKey)  
           
          hWndLong(2)   =   GetWindowLong(hWnd2,   GWL_WNDPROC)  
          ret   =   SetWindowLong(hWnd2,   GWL_WNDPROC,   AddressOf   WndProc)  
          idHotKey   =   2  
          Modifiers   =   0&  
          uVirtKey   =   vbKeyF2  
          ret   =   RegisterHotKey(hWnd2,   idHotKey,   Modifiers,   uVirtKey)  
  End   Sub  
   
  Private   Sub   Form_Load()  
          RegHook   Command1.hwnd,   Command2.hwnd  
  End   Sub  
   
  Private   Sub   Form_Unload(Cancel   As   Integer)  
          UnHook   Command1.hwnd,   Command2.hwnd  
  End   Sub

发表者:wooin

Private   Sub   Form_KeyUp(KeyCode   As   Integer,   Shift   As   Integer)  
          If   KeyCode   =   vbKeyF5   Then  
                  通知所有主机刷新  
          End   If  
  End   Sub  
   
  这个是按F5的情况,依此类推

发表者:frankwong

干嘛这么麻烦,在窗体的keydown事件处理  
  Private   Sub   Form_KeyDown(KeyCode   As   Integer,   Shift   As   Integer)  
  Select   Case   KeyCode  
  Case   vbKeyF1  
          MsgBox   "F1"  
  Case   vbKeyF2  
          MsgBox   "F2"  
  Case   vbKeyF3  
          MsgBox   "F3"  
  Case   vbKeyF4  
          MsgBox   "F4"  
  Case   vbKeyF5  
          MsgBox   "F5"  
  Case   vbKeyF6  
          MsgBox   "F6"  
  Case   vbKeyF7  
          MsgBox   "F7"  
  Case   vbKeyF8  
          MsgBox   "F8"  
  Case   vbKeyF9  
          MsgBox   "F9"  
  Case   vbKeyF10  
          MsgBox   "F10"  
  Case   vbKeyF11  
          MsgBox   "F11"  
  Case   vbKeyF12  
          MsgBox   "F12"  
  End   Select  
  End   Sub  
   
 

发表者:BlueBeer

窗体keypreview设为true


 

 
热门推荐笔记本: IBM笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved