zoukankan      html  css  js  c++  java
  • C#通过IMessageFilter捕获鼠标消息(转载)

    c#中怎样禁用鼠标左键的使用,其实我们可以通过ImessageFilter接口下的PreFilterMessage方法、Application类的AddMessageFilter方法,RemoveMessageFilter方法和Message结构的Msg属性来禁用鼠标左键。Message结构包装Windows发送的消息,可使用该结构包装消息,并将其分配给窗口过程以进行调度,还可以使用该结构获取系统向应用程序或控件发送的关于某个消息的信息。

    使用PreFilterMessage方法在调度消息之前将其筛选出来。语法格式如下:

    Bool PreFilterMessage(refMessage m)

    参数说明:

    m:要调度的消息,无法修改此消息。

    返回值:如果筛选消息并禁止消息被调度,则为True;如果允许消息继续到达下一个筛选器或控件,则为False。使用AddMessageFilter方法添加消息筛选器以便在向目标传送Windows消息时监视这些消息。使RemoveMessageFilter 从应用程序的消息泵移除一个消息筛选器。

    下面给出大家一下主要代码:


    复制代码
    Public partial class Form1:Form,ImessageFilter

    {

        Public Form1()

        {

            InitializeComponent();

        }

     Public bool PreFilterMessage(ref System.Windows.Forms.Message MyMessage)

    {

         //不响应鼠标左键消息

        If(MyMessage.Msg>=513 && MyMessage.Msg<=515)

           {

             Return true;

           }

       Return false;

    }

    Private voi button1_Click(object sender,EventArgs e)

    {

       Application.AddMessageFilter(this);

       MessageBox.show(“鼠标左键已经被禁止,请用Tab键执行操作”,”信息提示”,

    MessageBoxButtons.OK,MessageBoxIcn.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 

  • 相关阅读:
    MySql行锁等待时间
    日志工具类-Mapper静态调用
    MySql锁机制理解记录
    Flink之TableAPI和SQL(5):表的时间特性
    Flink之TableAPI和SQL(4):表的Sink实现
    Flink之TableAPI和SQL(3):通过TableAPI和SQL表的一些操作(包括查询,过滤,聚集等)
    Flink之TableAPI和SQL(2):表和外部系统的连接方式
    Flink之TableAPI和SQL(1):基本功能描述
    sb 错误
    洛谷 P6189
  • 原文地址:https://www.cnblogs.com/gscheng/p/4341714.html
Copyright © 2011-2022 走看看