易丰科技

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3547|回复: 0
打印 上一主题 下一主题

C# 使用 IMessageFilter

[复制链接]

111

主题

117

帖子

3588

积分

论坛元老

Rank: 8Rank: 8

积分
3588
跳转到指定楼层
楼主
发表于 2011-10-1 19:26:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
屏蔽所有滑鼠左键事件
  1. public class TestMessageFilter : IMessageFilter
  2. {
  3.     public bool PreFilterMessage(ref Message m)
  4.     {
  5.         if (m.Msg >= 513 && m.Msg <= 515)
  6.         {
  7.             Console.WriteLine("Processing the messages : " + m.Msg);
  8.             return true;
  9.         }
  10.         return false;
  11.     }
  12. }
复制代码
过滤滑鼠以及键盘的事件 (可用来做 idle 时的处理)
  1. public class UserActivityFilter : IMessageFilter
  2. {
  3.         // Define WinAPI window message values (see pinvoke.net)
  4.         private int WM_LBUTTONDOWN = 0x0201;
  5.         private int WM_MBUTTONDOWN = 0x0207;
  6.         private int WM_RBUTTONDOWN = 0x0204;
  7.         private int WM_MOUSEWHEEL = 0x020A;
  8.         private int WM_MOUSEMOVE = 0x0200;
  9.         private int WM_KEYDOWN = 0x0100;

  10.         public bool PreFilterMessage(ref Message m)
  11.         {
  12.             if (m.Msg == WM_LBUTTONDOWN || m.Msg == WM_MBUTTONDOWN || m.Msg == WM_RBUTTONDOWN || m.Msg == WM_MOUSEWHEEL || m.Msg == WM_MOUSEMOVE || m.Msg == WM_KEYDOWN)
  13.             {
  14.                 //User activity has occurred
  15.                 // Reset a flag / timer etc.
  16.             }
  17.             return false;
  18.         }
  19.   }
复制代码
在程式呼叫 Run 之前,要先呼叫下列的方法
  1. Application.AddMessageFilter(new UserActivityFilter());
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易丰科技

GMT+8, 2024-10-13 07:23 , Processed in 0.042422 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表