消息钩子与定时器(VC_Win32)

本文详细介绍了Windows编程中的消息钩子和定时器。首先讲解了消息钩子的概念,包括钩子过程、钩子链、消息钩子的分类以及相关函数的使用。接着阐述了定时器的建立、删除及相关函数,并提供了代码示例以帮助理解这两个关键概念在实际应用中的工作原理。
摘要由CSDN通过智能技术生成

消息钩子

[概述][相关函数][编写消息钩子]

概述

钩子过程

操作系统在传递消息时,将我们感兴趣的消息先传递给HOOK过程,在此函数中进行检查,然后在决定是否放行该消息,就好像逃犯在逃亡时可能会经过许多段路段,为了抓住他,警察要在某些地方设置检查站,以便检查过往的车辆和行人,我们可以把车辆和行人看做是消息,检查站就好像是HOOK过程,如果在摸个检查站发现了这个逃犯,就会把他抓起来,这样就相当于阻止了逃犯的逃亡过程,让他无法在继续逃亡下去了,这个道理和钩子过程是一样的,操作系统将我们感兴趣的消息都交给钩子过程,后者实际就是一个函数,在此函数中进行判断,如果是我们希望屏蔽的消息,那么就直接处理掉,不然它继续向下传递.如果我们不感兴趣的消息,就直接放弃对它们的处理,这就好像对于那些不是逃犯的行人和车辆一样,警察会让他们继续前进

钩子链

SetWindowsHookEx函数作用是安装一个应用程序定义的钩子过程,并将其放到钩子链中,为了让读者更好的理解钩子的概念,让我们在看看前面所举的逃犯的例子.警察在抓捕逃犯时,可以再多个地方设置检查站,逐一对车辆和行人进行排查,同样地,应用程序也可以在多个地方安装钩子函数,对我们感兴趣的多个消息逐一进行排查,这样多个钩子过程就形成了钩子链,要注意的是,最后安装的钩子过程总是排列在该链的前面

消息钩子分类

  • 进程内钩子  勾取本进程消息
  • 全局钩子     勾取所有消息

 

相关函数

[设置消息钩子][消息钩子回调函数][移除消息钩子]

设置消息钩子 SetWindowsHookEx

函数原型

HHOOK SetWindowsHookEx(
int idHook, // hook type
HOOKPROC lpfn, // hook procedure
HINSTANCE hMod, // handle to application instance
DWORD dwThreadId // thread identifier
);

参数说明

  • idHook

    指定要安装的钩子过程的类型

    • WH_CALLWNDPROC    安装一个钩子过程,在操作系统将消息发送到目标窗口处理过程之前,对该消息进行监视
    • WH_CALLWNDPROCRET 安装一个钩子过程,它对被目标窗口处理过了的消息进行监视
    • WH_CBT         安装一个钩子过程,接受对CBT应用程序有用的消息
    • WH_DEBUG         安装一个钩子过程,以便对其他钩子过程调试
    • WH_FOREGROUNDIDLE  安装一个钩子过程,该钩子过程当应用程序的前提线程即将进入空闲状态时被调用,它有助于在空闲时间内执行低优先级的任务
    • WH_GETMESSAGE     安装一个钩子过程对发送到消息队列的消息进行监视
    • WH_JOURNALPLAYBACK 安装一个钩子过程,对此前由WH_JORNALRECORD钩子过程记录的消息进行发送
    • WH_JOURNALRECORD   安装一个钩子过程,对发送到系统消息队列的输入消息进行记录
    • WH_KEYBOARD      安装一个钩子过程,对键盘按键消息进行监视
    • WH_KEYBOARD_LL      安装一个钩子过程,只能在Windows NT中安装,用来对底层的键盘输入事件进行监视
    • WH_MOUSE        安装一个钩子过程,对鼠标消息进行监视
    • WH_MOUSE_LL       安装一个钩子过程,只能在Windows NT中安装,用来对底层的鼠标输入事件进行监视
    • WH_MSGFILTER      安装一个钩子过程,以监视由对话框,消息框,菜单条,或滚动条中输入事件引发的消息
    • WH_SHELL            安装一个钩子过程,以接受外壳应用程序有用的通知
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值