C#实现在Form上截取消息的两种方法
比较常用的是重载Form的DefWndProc方法,例如截取鼠标按下的消息:
protected override void DefWndProc(ref Message m)
{
if ( m.Msg == 0x0201 )
{
MessageBox.Show(m.Msg.ToString());
}
else
{
base.DefWndProc (ref m);
}
}
还可以通过另一种办法,使用IMessageFilter 接口:
public class
MessageFilter : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == 0x0201)
{
MessageBox.Show("WM_LBUTTONDOWN is: " +
m.Msg);
return true;
}
return false;
}
}
然后使用Application.AddMessageFilter方法,例如:
private static
MessageFilter msgFliter = new MessageFilter();
在Main方法中注册消息筛选器:
Application.AddMessageFilter(msgFliter);
如果要取消注册,可以调用Application.RemoveMessageFilter方法
在这里有一个Windows的MessageID的枚举,挺有用的,好几次都忘了地址,这次写在这里好好保存
Windows Message ID
constants
一、截取系统消息
方法一:
//添加监视消息
private void Form_Load(object sender, System.EventArgs e)
{
Application.AddMessageFilter(this);
}
//撤消消息监视
private void Form_Closing(object sender,
System.ComponentModel.CancelEventArgs e)
{
Application.RemoveMessageFilter(this);
}
//截取消息,进行处理
public bool PreFilterMessage(ref System.Windows.Forms.Message
m)
{
switch(m.Msg )
{
case 513: //拦截左键单击事件
MessageBox.Show("哈哈,你点击了左键被拦截!");
return true; //返回true则消息被裁取,系统不再处理
case 516: //拦截左键单击事件
MessageBox.Show("哈哈,你点击了右键被拦截!");
return true; //返回true则消息被裁取,系统不再处理
default:
return false; //返回false则消息未被裁取,系统会处理
}
}
方法二:
//截取消息,进行处理
protected override void WndProc(ref Message
m)
{
switch(m.Msg)
{
case 17:
MessageBox.Show("哈哈,你不能关闭计算机!");
m.Result=(IntPtr)0;
break;
case 513:
MessageBox.Show("哈哈,你不能点击左键!");
m.Result=(IntPtr)0;
break;
case 516:
MessageBox.Show("哈哈,你不能点击右键!");
m.Result=(IntPtr)0;
break;
default:
base.WndProc(ref m);
break;
}
}
最新文章
- 优酷土豆2014校园招聘笔试题目之Java开发类
- Objective-C 编码建议
- centos启用ftp功能
- Virtual Box创建共享目录
- JavaScript数据结构,队列和栈
- wifi热点共享 3G网络
- [转]Oracle_ProC编程
- asp.net web forms和asp.net mvc比较
- POJ 3701 概率DP
- 【转】掌握java枚举类型(enum type)
- C++学习之虚继承
- POJ 2991 Crane(线段树+计算几何)
- Sass与Compress实战:第三章
- JavaScript字符集编码与解码
- C#在与java对接时候的UrlEncode的坑
- 【转】Awk 命令学习总结、AWk命令系列学习(linux shell)
- 【转载】DRuid 大数据分析之查询
- 【js】【图片显示】js控制html页面显示图片方式
- Haproxy 安装初体验
- Elasticsearch索引模板和别名