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 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值