C#怎么实现鼠标消息捕获
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,小编给大家分享一下C#怎么实现鼠标消息捕获,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterM
千家信息网最后更新 2025年02月01日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() { DictionarydictGrade = 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安全错误
数据库的锁怎样保障安全
java实现服务器控制多个视频
万词霸屏网络技术有限公司
艾尔登法环游戏服务器断开连接
qq撤回的东西还在服务器上吗
vs根据数据库生成属性
学习软件开发毕业后能干什么
成都健之德网络技术有限公司
我国高新科技互联网企业
福鼎艾洛裳网络技术公司
辽宁移动dns服务器地址云主机
阿里云搭建服务器稳定吗
南京华锐软件开发公司
互联网科技网站哪个好
网络安全法 文库
数据库为什么用命令
c 链接加密的数据库文件
单路服务器管理大屏
深圳市网络安全检测软件开发
a-b数据库概论
和平精英服务器无响应怎么回事
西安网络安全监察部
dao jet数据库引擎
艾尔登法环链接不到服务器
软件开发很累么
用安卓平板做软件开发
海南会务无纸化软件开发
流放之路数据库国服
外企软件开发公司工资待遇
ibm服务器延保
软件开发能力雷达图