c#截获系统消息

如何截获系统消息,比如说系统关机的消息等等。

 

实现这项功能最基本的一个函数就是WndProc(ref Message message)函数,其次我们还要知道系统消息的代码值,比如说关机消息的代码值就是0x0011。接下来我们以关机消息为例进行讲解:

 

首先定义关机消息代码值

private const int WM_QUERYENDSESSION = 0x0011;  //关机消息定义

 

其次在WndProc函数中处理消息

protected override void WndProc(ref  Message m)
{
    switch (m.Msg)
    {
        case WM_QUERYENDSESSION:
            // 你的处理代码
            base.WndProc(ref  m);
            break;
        default:
            base.WndProc(ref  m);
            break;
    }
}

 

其中还有一个方法可以控制系统消息,那就是bool PreFilterMessage(ref System.Windows.Forms.Message m)。

 

用法如下:

//添加监视消息
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)

{

        case 513: //拦截左键单击事件       

                MessageBox.Show("哈哈,你点击了左键被拦截!");//返回true则消息被裁取,系统不再处理    

        case 516: //拦截左键单击事件       

                MessageBox.Show("哈哈,你点击了右键被拦截!");//返回true则消息被裁取,系统不再处理            default:      

                return false; //返回false则消息未被裁取,系统会处理  

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值