zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Oracle查看锁表并杀死进程
    Oracle查看表空间、是否开启扩展
    Linux日常命令记录
    【转载】LUbuntu,Ubuntu下设置自定义桌面分辨率
    windows下查找端口并杀死进程
    【转载】JAVA中IO流操作的基本规律总结
    【转载】hashCode()、equals()以及compareTo()方法的理解
    RuntimeException、Exception联系区别
    Java内存、数组
    【概念理解】同步异步、阻塞非阻塞
  • 原文地址:https://www.cnblogs.com/icebutterfly/p/2128708.html
Copyright © 2011-2022 走看看