易丰科技

标题: C# 使用 IMessageFilter [打印本页]

作者: Calvin    时间: 2011-10-1 19:26
标题: C# 使用 IMessageFilter
屏蔽所有滑鼠左键事件
  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());
复制代码







欢迎光临 易丰科技 (http://forum.yftek.com/) Powered by Discuz! X3