.NET下如何拦截鼠标、键盘消息?Win32NET来帮你


 

Win32NET是一个Win32API的.NET下封装的类库,包含:

1: 常用win32的API的net封装

2:鼠标、键盘、热键hook钩子模块,

3:模拟键盘输入文字(支持各种字符文字、不同语言的文字)、模拟鼠标点击移动滚动等操作

4.系统硬件信息查询

如何使用该Win32Net库呢?可以在nuget包管理搜索Win32Net,

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");

喜欢的小伙伴们可以关注学堂公众号,更多内容等你来

 

项目地址:

码云: https://gitee.com/raoyutian/win32

GitHub: https://gitee.com/raoyutian/win32

文章出处:https://www.cnblogs.com/raoyutian/p/15815616.html
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:使用Hot Chocolate和.NET 6构建GraphQL应用(2) —— 实体相关功能实现
下一篇:.NET中大型项目开发必备(2)--CORS跨域访问
评论列表

发表评论

评论内容
昵称:
关联文章

.NET如何拦截鼠标键盘消息Win32NET
使用 mitmproxy + python 做拦截代理
消息发送时的问题
win11使用小技巧之便捷调出的任务管理器
在 SA 和 Windows 等账户都被禁用的情况如何登录?
如何提升.NET控制台应用体验?
手把手教学Dapr - 9. 可观测性
.Net 高性能分表分库组件-连接模式原理
win32api之添加水印
selenium爬虫被检测到 该如何
Devexpress GridControl表格无法鼠标滚轮上下滚动
.NET中大型项目开发必备(12)--使用MQ消息队列
手把手教学Dapr - 7. Actors
.net core如何添加一个唯一的请求ID
手把手教学Dapr - 6. 发布订阅
win11删除快捷方式的箭头
CSS鼠标hover 背景动画煽动效果
如何在 .NET 8 服务中指定端口号启动:最佳实践与动态配置
钉钉对接中消息频率限制
如何使用webpack打包的项目

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码