C#怎么实现鼠标消息捕获
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,小编给大家分享一下C#怎么实现鼠标消息捕获,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterM
千家信息网最后更新 2025年11月07日C#怎么实现鼠标消息捕获
小编给大家分享一下C#怎么实现鼠标消息捕获,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterMessage方法、Application类的AddMessageFilter方法,RemoveMessageFilter方法和Message结构的Msg属性来禁用鼠标左键。Message结构包装Windows发送的消息,可使用该结构包装消息,并将其分配给窗口过程以进行调度,还可以使用该结构获取系统向应用程序或控件发送的关于某个消息的信息。
使用PreFilterMessage方法在调度消息之前将其筛选出来。语法格式如下:
Bool PreFilterMessage(ref Message m)
参数说明:
m:要调度的消息,无法修改此消息。
返回值:如果筛选消息并禁止消息被调度,则为True;如果允许消息继续到达下一个筛选器或控件,则为False。使用AddMessageFilter方法添加消息筛选器以便在向目标传送Windows消息时监视这些消息。使RemoveMessageFilter 从应用程序的消息泵移除一个消息筛选器。
示例一:在ComboBox选择值的时候,选择的值会随鼠标滚轮的滑动而改变,有时候不小心滑动了滑轮,导致选择的值改变,在下面的示例中,通过禁用鼠标滚轮,防止鼠标滚轮的滑动改变ComboBox选择的值。
界面:
代码实现:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace MouseDemo{ public partial class FrmMain : Form,IMessageFilter { public FrmMain() { InitializeComponent(); } public bool PreFilterMessage(ref Message m) { if (m.Msg == 522) { return true; } else { return false; } } /// /// 窗体加载 /// /// /// private void FrmMain_Load(object sender, EventArgs e) { InitComboBox(); } /// /// 初始化ComboBox /// private void InitComboBox() { Dictionary dictGrade = new Dictionary(); dictGrade.Add(1, "一年级"); dictGrade.Add(2, "二年级"); dictGrade.Add(3, "三年级"); dictGrade.Add(4, "四年级"); dictGrade.Add(5, "五年级"); dictGrade.Add(6, "六年级"); BindingSource dataSource = new BindingSource(); dataSource.DataSource = dictGrade; cmb_Grade.DataSource = dataSource; cmb_Grade.DisplayMember = "Value"; cmb_Grade.ValueMember = "Key"; } /// /// 索引改变事件 /// /// /// private void cmb_Grade_SelectedIndexChanged(object sender, EventArgs e) { //添加消息过滤 Application.AddMessageFilter(this); } }} 示例二:窗体设置右键控件,演示禁用和解除禁用右键功能,右键菜单只有复制、剪切、粘贴三项
界面:
代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace MouseRightDemo{ public partial class FrmMouseRight : Form ,IMessageFilter { public FrmMouseRight() { InitializeComponent(); } /// /// 实现方法 /// /// /// public bool PreFilterMessage(ref Message m) { //不响应鼠标右键 if (m.Msg >= 516 && m.Msg <= 517) { return true; } else { return false; } } /// /// 禁用鼠标右键 /// /// /// private void button1_Click(object sender, EventArgs e) { //添加消息 Application.AddMessageFilter(this); MessageBox.Show("鼠标右键已被禁止使用", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } /// /// 解决禁用鼠标右键 /// /// /// private void button2_Click(object sender, EventArgs e) { //移除消息 Application.RemoveMessageFilter(this); MessageBox.Show("鼠标右键已被解除禁止使用,可以使用鼠标右键", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }}鼠标动作常见参数:
鼠标移动:512
鼠标左键:
down:513 up:514
double click:515
鼠标右键:
down:516 up:517
鼠标滚轮:522
看完了这篇文章,相信你对"C#怎么实现鼠标消息捕获"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
消息
鼠标
年级
方法
滚轮
结构
调度
选择
C#
控件
示例
筛选器
代码
参数
应用程序
界面
程序
窗体
篇文章
包装
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
战锤3无法访问服务器怎么办
中国居民网络安全提供商简介
td-lte网络技术论文
服务器没有磁盘阵列卡
邹平仓库管理软件开发
阿里云服务器去除安全骑士
有趣的网络安全答题
数据库的连接串含义
三年级网络安全知识内容
学校学生网络安全宣传
原神有哪些国家的服务器
为何老是出现下载服务器
江西常用软件开发联系方式
如何远程连接服务器或电脑
数据库中有哪些表关系
九阴真经服务器排名
宝山区威力网络技术参考价格
网络安全信息审计有几方面
数据库如何储存视频数据
速达怎么导入初始数据库
怎样防范网络安全和风险
编程毕业论文选题数据库
hbase数据库 定义
论文中数据库逻辑结构设计
如何配置数据库提高安全性
电子网络技术学啥
大型小程序软件开发
2022希望之村服务器没了
安徽互联网软件开发机构
惠普380服务器参数