为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

[讲稿]VB6全局键盘、鼠标钩子

2017-10-25 7页 doc 23KB 45阅读

用户头像

is_105949

暂无简介

举报
[讲稿]VB6全局键盘、鼠标钩子[讲稿]VB6全局键盘、鼠标钩子 VB: È??Ö?üÅÌ??Êó?ê??×Ó '--------------------------------- 'Form '??×???×Ó Private sub AddHook() '?üÅÌ??×Ó lHook(0) = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf CallKeyHookProc, App.hInstance, 0) 'Êó?ê??×Ó lHook(1) = SetWindowsHookEx(WH_MOUS...
[讲稿]VB6全局键盘、鼠标钩子
[讲稿]VB6全局键盘、鼠标钩子 VB: È??Ö?üÅÌ??Êó?ê??×Ó '--------------------------------- 'Form '??×???×Ó Private sub AddHook() '?üÅÌ??×Ó lHook(0) = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf CallKeyHookProc, App.hInstance, 0) 'Êó?ê??×Ó lHook(1) = SetWindowsHookEx(WH_MOUSE_LL, AddressOf CallMouseHookProc, App.hInstance, 0) End Sub 'Ð???×Ó Private sub DelHook() UnhookWindowsHookEx lHook(0) UnhookWindowsHookEx lHook(1) End Sub '--------------------------------- 'Ä??é Public 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 Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long) Public Type KEYMSGS vKey As Long 'ÐéÄâÂë (and &HFF) sKey As Long 'É?ÃèÂë flag As Long '?ü??ÏÂ?º128 Ì?Æð?º0 time As Long 'WindowÔËÐÐÊ??ä End Type Public Type MOUSEMSGS X As Long 'x×ù?ê Y As Long 'y×ù?ê a As Long b As Long time As Long 'WindowÔËÐÐÊ??ä End Type Public Type POINTAPI X As Long Y As Long End Type Public Const WH_KEYBOARD_LL = 13 Public Const WH_MOUSE_LL = 14Public Const Alt_Down = &H20 '----------------------------------------- 'ÏûÏ? Public Const HC_ACTION = 0 Public Const HC_SYSMODALOFF = 5 Public Const HC_SYSMODALON = 4 '?üÅÌÏûÏ? Public Const WM_KEYDOWN = &H100 Public Const WM_KEYUP = &H101 Public Const WM_SYSKEYDOWN = &H104 Public Const WM_SYSKEYUP = &H105 'Êó?êÏûÏ? Public Const WM_MOUSEMOVE = &H200 Public Const WM_LBUTTONDOWN = &H201Public Const WM_LBUTTONUP = &H202 Public Const WM_LBUTTONDBLCLK = &H203 Public Const WM_RBUTTONDOWN = &H204 Public Const WM_RBUTTONUP = &H205 Public Const WM_RBUTTONDBLCLK = &H206 Public Const WM_MBUTTONDOWN = &H207 Public Const WM_MBUTTONUP = &H208 Public Const WM_MBUTTONDBLCLK = &H209 Public Const WM_MOUSEACTIVATE = &H21 Public Const WM_MOUSEFIRST = &H200 Public Const WM_MOUSELAST = &H209 Public Const WM_MOUSEWHEEL = &H20A Public Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpBuffer As String, ByVal nSize As Long) As Long Public strKeyName As String * 255 Public Declare Function GetActiveWindow Lib "user32" () As Long Public keyMsg As KEYMSGS Public MouseMsg As MOUSEMSGS Public lHook(1) As Long '---------------------------------------- 'Ä?ÄâÊó?ê Private Const MOUSEEVENTF_LEFTDOWN = &H2 Private Const MOUSEEVENTF_LEFTUP = &H4 Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long '-------------------------------------- 'Ä?Äâ???ü Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) 'Êó?ê??×Ó Public Function CallMouseHookProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim pt As POINTAPI If code = HC_ACTION Then CopyMemory MouseMsg, lParam, LenB(MouseMsg) Form1.txtMsg(1).Text = "X=" + Str(MouseMsg.X) + " Y=" + Str(MouseMsg.Y) Form1.txtHwnd(1) = Format(wParam, "0") If wParam = WM_MBUTTONDOWN Then '?ÑÖÐ?ü?ÄΪ×ó?ü mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 CallMouseHookProc = 1 End If If wParam = WM_MBUTTONUP Then mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 CallMouseHookProc = 1 End If End If If code <> 0 Then CallMouseHookProc = CallNextHookEx(0, code, wParam, lParam) End If End Function '?üÅÌ??×Ó Public Function CallKeyHookProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim lKey As Long Dim strKeyName As String * 255 Dim strLen As Long If code = HC_ACTION Then CopyMemory keyMsg, lParam, LenB(keyMsg) Select Case wParam Case WM_SYSKEYDOWN, WM_KEYDOWN, WM_SYSKEYUP, WM_KEYUP: lKey = keyMsg.sKey And &HFF 'É?ÃèÂë lKey = lKey * 65536 strLen = GetKeyNameText(lKey, strKeyName, 250) Form1.txtMsg(0).Text = "?üÃû:" + Left(strKeyName, strLen) + " ÐéÄâÂë:" + Format(keyMsg.vKey And &HFF, "0") + " É?ÃèÂë:" + Format(lKey / 65536, "0") Form1.txtHwnd(0) = "" If (GetKeyState(vbKeyControl) And &H8000) Then Form1.txtHwnd(0) = Form1.txtHwnd(0) + "Ctrl " End If If (keyMsg.flag And Alt_Down) <> 0 Then Form1.txtHwnd(0) = Form1.txtHwnd(0) + "Alt " End If If (GetKeyState(vbKeyShift) And &H8000) Then Form1.txtHwnd(0) = Form1.txtHwnd(0) + "Shift" End If 'keyMsg.vKey And &HFF ÐéÄâÂë 'lKey / 65536 É?ÃèÂë If (keyMsg.vKey And &HFF) = vbKeyY Then '?ÑY?üÌæ??ΪN If wParam = WM_SYSKEYDOWN Or wParam = WM_KEYDOWN Then keybd_event vbKeyN, 0, 0, 0 End If CallKeyHookProc = 1 'ÆÁ?Î???ü End If End Select End If If code <> 0 Then CallKeyHookProc = CallNextHookEx(0, code, wParam, lParam) End If End Function ===================================================================
/
本文档为【[讲稿]VB6全局键盘、鼠标钩子】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索