-
VB.net / IO / 获取鼠标键盘事件的钩子函数(4)
Int32
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) '激活事件
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))
Dim isDownCapslock As Boolean = (GetKeyState(VK_CAPITAL))
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)
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
Private Function MouseHookProc(ByVal nCode As Int32, ByVal wParam As Int32, ByVal lParam As IntPtr) As Int32
If nCode = 0 Then
Dim mouseHookStruct As MouseLLHookStruct = Marshal.PtrToStructure(lParam, GetType(MouseLLHookStruct))
Dim moubut As MouseButtons = MouseButtons.None '鼠标按键
Dim mouseDelta As Integer = 0 '滚轮值
Dim mousePoint As Point = New Point(0, 0)
Select Case wParam
Case WM_LBUTTONDOWN: moubut = MouseButtons.Left
Case WM_RBUTTONDOWN: moubut = MouseButtons.Right
Case WM_MBUTTONDOWN: moubut = MouseButtons.Middle
Case WM_MOUSEWHEEL
Dim int As Integer = mouseHookStruct.MouseData ') And &HFFFF
If int = Short.MaxValue Then mouseDelta = int - 65536 Else mouseDelta = int
Case WM_MOUSEMOVE
If mouseHookStruct.X >= 0 And mouseHookStruct.X <= 99999999 Then
mousePoint.X = mouseHookStruct.X
If
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式