• C#通过IMessageFilter捕获鼠标消息


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

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

    Bool PreFilterMessagerefMessage 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

  • 相关阅读:
    第一个爬虫和测试
    数学规律
    自定义手绘
    tqqqy的成绩表
    Linux常用命令-netstat
    文档查看命令 cat more less tail head
    Linux三剑客-常用命令
    IO多路复用模型
    redis 的线程模型
    为什么需要缓存?
  • 原文地址:https://www.cnblogs.com/icebutterfly/p/2128708.html
Copyright © 2020-2023  润新知