易丰科技
标题:
C# 使用 IMessageFilter
[打印本页]
作者:
Calvin
时间:
2011-10-1 19:26
标题:
C# 使用 IMessageFilter
屏蔽所有滑鼠左键事件
public class TestMessageFilter : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
if (m.Msg >= 513 && m.Msg <= 515)
{
Console.WriteLine("Processing the messages : " + m.Msg);
return true;
}
return false;
}
}
复制代码
过滤滑鼠以及键盘的事件 (可用来做 idle 时的处理)
public class UserActivityFilter : IMessageFilter
{
// Define WinAPI window message values (see pinvoke.net)
private int WM_LBUTTONDOWN = 0x0201;
private int WM_MBUTTONDOWN = 0x0207;
private int WM_RBUTTONDOWN = 0x0204;
private int WM_MOUSEWHEEL = 0x020A;
private int WM_MOUSEMOVE = 0x0200;
private int WM_KEYDOWN = 0x0100;
public bool PreFilterMessage(ref Message m)
{
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)
{
//User activity has occurred
// Reset a flag / timer etc.
}
return false;
}
}
复制代码
在程式呼叫 Run 之前,要先呼叫下列的方法
Application.AddMessageFilter(new UserActivityFilter());
复制代码
欢迎光临 易丰科技 (http://forum.yftek.com/)
Powered by Discuz! X3