Hook和鼠標事件

weixin_40425634 2017-10-07 10:02:28
請問一下
有Hook和鼠標事件的範例程式嗎
我爬文及網上下載的都無法使用
...全文
217 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
轻鸿万里 2017-10-30
  • 打赏
  • 举报
回复
'键盘消息的委托处理代码 Private Function KeyboardHookProc(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As Integer Dim handled As Boolean = False If nCode >= 0 Then Dim MyKeyboardHookStruct As KeyboardHookStruct = DirectCast(Marshal.PtrToStructure(lParam, GetType(KeyboardHookStruct)), KeyboardHookStruct) '激活KeyDown If wParam = WM_KEYDOWN OrElse wParam = WM_SYSKEYDOWN Then '如果消息为按下普通键或系统键 Dim e As New KeyEventArgs(MyKeyboardHookStruct.vkCode) RaiseEvent KeyDown(Me, e) '激活事件 Select Case e.KeyCode Case Keys.F12 MsgBox("我睡觉,请稍后……", MsgBoxStyle.Exclamation, "按F12提醒") End Select handled = handled Or e.Handled '是否取消下一个钩子 End If '激活KeyUp If wParam = WM_KEYUP OrElse wParam = WM_SYSKEYUP Then Dim e As New KeyEventArgs(MyKeyboardHookStruct.vkCode) RaiseEvent KeyUp(Me, e) handled = handled Or e.Handled End If '激活KeyPress If wParam = WM_KEYDOWN Then Dim isDownShift As Boolean = (GetKeyState(VK_SHIFT) & &H80 = &H80) Dim isDownCapslock As Boolean = (GetKeyState(VK_CAPITAL) <> 0) Dim keyState(256) As Byte GetKeyboardState(keyState) Dim inBuffer(2) As Byte If ToAscii(MyKeyboardHookStruct.vkCode, MyKeyboardHookStruct.ScanCode, keyState, inBuffer, MyKeyboardHookStruct.Flags) = 1 Then Dim key As Char = Chr(inBuffer(0)) If isDownCapslock Xor isDownShift And Char.IsLetter(key) Then key = Char.ToUpper(key) End If Dim e As New KeyPressEventArgs(key) RaiseEvent KeyPress(Me, e) handled = handled Or e.Handled End If End If '取消或者激活下一个钩子 If handled Then Return 1 Else Return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam) End If End Function

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧