iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >C#怎么实现鼠标消息捕获
  • 352
分享到

C#怎么实现鼠标消息捕获

2023-06-29 08:06:10 352人浏览 安东尼
摘要

小编给大家分享一下C#怎么实现鼠标消息捕获,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterMessage方法、Application

小编给大家分享一下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选择的值。

界面:

C#怎么实现鼠标消息捕获

代码实现:

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;            }        }        /// <summary>        /// 窗体加载        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void FrmMain_Load(object sender, EventArgs e)        {            InitComboBox();        }        /// <summary>        /// 初始化ComboBox        /// </summary>        private void InitComboBox()        {            Dictionary<int, string> dictGrade = new Dictionary<int, string>();            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";        }        /// <summary>        /// 索引改变事件        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void cmb_Grade_SelectedIndexChanged(object sender, EventArgs e)        {              //添加消息过滤            Application.AddMessageFilter(this);        }    }}

示例二:窗体设置右键控件,演示禁用和解除禁用右键功能,右键菜单只有复制、剪切、粘贴三项

界面:

C#怎么实现鼠标消息捕获

代码:

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();        }        /// <summary>        /// 实现方法        /// </summary>        /// <param name="m"></param>        /// <returns></returns>        public bool PreFilterMessage(ref Message m)        {            //不响应鼠标右键            if (m.Msg >= 516 && m.Msg <= 517)            {                return true;            }            else            {                return false;            }        }        /// <summary>        /// 禁用鼠标右键        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void button1_Click(object sender, EventArgs e)        {               //添加消息            Application.AddMessageFilter(this);            MessageBox.Show("鼠标右键已被禁止使用", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);        }        /// <summary>        /// 解决禁用鼠标右键        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        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#怎么实现鼠标消息捕获”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: C#怎么实现鼠标消息捕获

本文链接: https://www.lsjlt.com/news/323547.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#怎么实现鼠标消息捕获
    小编给大家分享一下C#怎么实现鼠标消息捕获,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterMessage方法、Application...
    99+
    2023-06-29
  • C#实现鼠标消息捕获
    在C#中怎样禁用鼠标按键,我们可以通过ImessageFilter接口下的PreFilterMessage方法、Application类的AddMessageFilter方法,Rem...
    99+
    2024-04-02
  • C#模拟实现鼠标自动点击与消息发送功能
    目录实现功能开发环境实现代码实现效果一个简单的实现版本,没有去Hook键鼠等操作,事先录制好操作步骤(将鼠标移动到需要操作的位置,按下热键执行相应动作),点击运行即可。 主要还是用w...
    99+
    2024-04-02
  • C#中怎么获取鼠标位置
    本篇文章给大家分享的是有关C#中怎么获取鼠标位置,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。这里将介绍C#鼠标位置相关获取程序代码,包括从图片的划分,左右边框的确定,鼠标移动...
    99+
    2023-06-17
  • AJAX中怎么实现鼠标悬浮获取值
    AJAX中怎么实现鼠标悬浮获取值,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 客户端代码mouseover...
    99+
    2024-04-02
  • c语言怎么实现鼠标交互
    在C语言中实现鼠标交互通常需要使用操作系统提供的图形库或者API。下面是使用Windows API实现鼠标交互的简单示例: #inc...
    99+
    2024-03-15
    c语言
  • Node端异常捕获怎么实现
    这篇文章主要介绍“Node端异常捕获怎么实现”,在日常操作中,相信很多人在Node端异常捕获怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node端异常捕获怎么实现”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-02
  • 怎么实现vue+openlayer5获取当前鼠标滑过的坐标
    本篇内容主要讲解“怎么实现vue+openlayer5获取当前鼠标滑过的坐标”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么实现vue+openlayer5获取当前鼠标滑过的坐标”吧!前言:&...
    99+
    2023-06-25
  • Win10鼠标光标消失了怎么办
    本篇内容主要讲解“Win10鼠标光标消失了怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Win10鼠标光标消失了怎么办”吧!第一步:点击电脑“开始”菜单,选择“电源选项”。第二步:点击“电...
    99+
    2023-06-27
  • 怎么用Python代码实现微信消息撤回捕捉功能
    本篇内容介绍了“怎么用Python代码实现微信消息撤回捕捉功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1,模块介绍首先的话要实现消息撤...
    99+
    2023-06-16
  • Python3实现捕获Ctrl+C终止信号
    目录技术背景基础案例给终止信号传入外部参数总结概要技术背景 对于一些连续运行或者长时间运行的Python程序而言,如服务器的后端,或者是长时间运行的科学计算程序。当我们涉及到一些中途...
    99+
    2023-03-13
    Python捕获Ctrl+C终止信号 Python Ctrl+C终止信号 Python捕获信号
  • C# Winform 实现TCP发消息
    目录服务端:窗体代码:客户端:窗体代码运行结果:服务端: 窗体 代码: using System; using System.Collections.Generic; usin...
    99+
    2024-04-02
  • c语言怎么获取鼠标当前位置
    在C语言中,要获取鼠标的当前位置,需要使用操作系统提供的相关函数。在Windows操作系统中,可以使用`GetCursorPos`函数获取鼠标的当前坐标。该函数的原型为:```cBOOL GetCursorPos(LPPOINT lpP...
    99+
    2023-08-11
    c语言
  • C#中怎么实现鼠标形状变换效果
    C#中怎么实现鼠标形状变换效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。【C#鼠标形状变换效果的问题】:在一个form上存在一个图片,当用户点击图片的时候,图片会放大,...
    99+
    2023-06-17
  • JBuilder7怎么实现鼠标滚轮
    这篇文章主要介绍了JBuilder7怎么实现鼠标滚轮的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JBuilder7怎么实现鼠标滚轮文章都会有所收获,下面我们一起来看看吧。1,光标问题解决方式tools->...
    99+
    2023-06-03
  • C++委托和消息反馈模板怎么实现
    本篇内容介绍了“C++委托和消息反馈模板怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!继承+多态乍一看是理所当然的选择,库中的类把响...
    99+
    2023-06-17
  • Python3如何实现捕获Ctrl+C终止信号
    技术背景针对长时间运行的Python程序,例如服务器的后端或科学计算程序,需要特别关注。在进行某些操作时,如使用Ctrl+C结束正在运行的程序,我们可能需要提前中止。通常情况下,出现这种情况有两种可能性:一种是程序出错,需要停止程序以进行调...
    99+
    2023-05-21
    Python
  • JavaScript offset怎么实现鼠标坐标获取和窗口内模块拖动
    小编给大家分享一下JavaScript offset怎么实现鼠标坐标获取和窗口内模块拖动,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!offsetoffset 即偏移量,使用 offset 系列相关属性可以 动态的 获取该...
    99+
    2023-06-15
  • MSMQ消息队列怎么实现
    这篇文章主要介绍了MSMQ消息队列怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MSMQ消息队列怎么实现文章都会有所收获,下面我们一起来看看吧。一、引言Windows Communication Fou...
    99+
    2023-06-29
  • go怎么实现消息队列
    在Go语言中,你可以使用第三方库来实现消息队列。目前比较常用的消息队列库有:1. RabbitMQ:RabbitMQ是一个开源的消息...
    99+
    2023-08-31
    go
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作