.NET下如何拦截鼠标、键盘消息?Win32NET来帮你
Win32NET是一个Win32API的.NET下封装的类库,包含:
1: 常用win32的API的net封装
2:鼠标、键盘、热键hook钩子模块,
3:模拟键盘输入文字(支持各种字符文字、不同语言的文字)、模拟鼠标点击移动滚动等操作
4.系统硬件信息查询
如何使用该Win32Net库呢?可以在nuget包管理搜索Win32Net,
1 | Install-Package Win32Net -Version 1.2.0 |
或者直接添加引用,
<PackageReference Include="Win32Net" Version="1.2.0" /
如何使用鼠标钩子:
首先实例化一个鼠标钩子对象,然后定义鼠标事件回调方法,启动监听即可。当不需要继续监听鼠标信息,则可以取消监听。
win32.Hooks.MouseHook mouseHook = new Hooks.MouseHook();//实例化鼠标钩子对象 mouseHook.LeftDown += MouseHook_LeftDown;//鼠标左键按下的事件监听回调方法 mouseHook.Start();//开始监听 mouseHook.Stop();//停止监听
如何使用键盘钩子:
键盘钩子与鼠标钩子使用类似,首先实例化一个键盘钩子对象,然后定义键盘事件回调方法,启动监听即可。当不需要继续监听键盘信息,则可以取消监听。
Win32.Hooks.KeyboardHook keyboardHook = new Win32.Hooks.KeyboardHook(); keyboardHook.OnKeyUp += KeyboardHook_OnKeyUp; keyboardHook.Start(); keyboardHook.Stop();
如何注册全局快捷键
//WPF 窗口句柄 //IntPtr hwnd = new WindowInteropHelper(WPFWindow对象).Handle; //winform 窗口句柄 IntPtr hwnd = this.Handle; //实例化热键对象,需要一个句柄,用于接收消息 Win32.Hooks.SystemHotKey systemHotKey = new Win32.Hooks.SystemHotKey(hwnd); //热键id,要求唯一 int hotKeyId = 5000; //注册Alt+Q快捷键 systemHotKey.AddHotKey(hotKeyId, Win32.KeyModifiers.Alt, Keys.Q, () => { MessageBox.Show("你按了Alt+Q快捷键"); } ); //注册ESC快捷键 systemHotKey.AddHotKey(hotKeyId + 1, Win32.KeyModifiers.None, Keys.Escape, () => { this.Close(); } );
如何获取系统硬件信息
Win32.SystemInfo systemInfo = new Win32.SystemInfo(); richTextBox1.AppendText("操作系统:" + systemInfo.operatingSystem.Caption + "\n"); richTextBox1.AppendText("系统ID:" + systemInfo.operatingSystem.SerialNumber + "\n"); richTextBox1.AppendText("操作系统平台:" + systemInfo.operatingSystem.OSLevel + "\n"); richTextBox1.AppendText("系统安装时间:" + systemInfo.operatingSystem.InstallDate + "\n"); richTextBox1.AppendText("系统最近启动时间:" + systemInfo.operatingSystem.LastBootUpTime + "\n"); richTextBox1.AppendText("系统时间:" + systemInfo.operatingSystem.LocalDateTime + "\n"); richTextBox1.AppendText("CPU:" + systemInfo.processor.Name + "\n"); richTextBox1.AppendText("CPU厂商:" + systemInfo.processor.Manufacturer + "\n"); richTextBox1.AppendText("CPU序列号:" + systemInfo.processor.SerialNumber + "\n"); richTextBox1.AppendText("物理内存:" + systemInfo.memory.TotalPhysicalMemory + "\n");
喜欢的小伙伴们可以关注学堂公众号,更多内容等你来
项目地址:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」