• 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 

  • 相关阅读:
    webService 服务端搭建
    ss2h 整合
    Java绘制登陆验证码
    c3p0连接池
    DBCP连接池
    Cglib动态代理
    会话技术(Cookie,Session)
    Tomcat设置角色和密码
    转发和重定向
    JDK动态代理
  • 原文地址:https://www.cnblogs.com/gscheng/p/4341714.html
Copyright © 2020-2023  润新知