消息钩子与定时器(VC_Win32)
2012-11-14 18:21
204 查看
目录
消息钩子定时器
(本章节中例子都是用 VS2005 编译调试的)
消息钩子
[概述][相关函数][编写消息钩子]概述
钩子过程操作系统在传递消息时,将我们感兴趣的消息先传递给HOOK过程,在此函数中进行检查,然后在决定是否放行该消息,就好像逃犯在逃亡时可能会经过许多段路段,为了抓住他,警察要在某些地方设置检查站,以便检查过往的车辆和行人,我们可以把车辆和行人看做是消息,检查站就好像是HOOK过程,如果在摸个检查站发现了这个逃犯,就会把他抓起来,这样就相当于阻止了逃犯的逃亡过程,让他无法在继续逃亡下去了,这个道理和钩子过程是一样的,操作系统将我们感兴趣的消息都交给钩子过程,后者实际就是一个函数,在此函数中进行判断,如果是我们希望屏蔽的消息,那么就直接处理掉,不然它继续向下传递.如果我们不感兴趣的消息,就直接放弃对它们的处理,这就好像对于那些不是逃犯的行人和车辆一样,警察会让他们继续前进
钩子链
SetWindowsHookEx函数作用是安装一个应用程序定义的钩子过程,并将其放到钩子链中,为了让读者更好的理解钩子的概念,让我们在看看前面所举的逃犯的例子.警察在抓捕逃犯时,可以再多个地方设置检查站,逐一对车辆和行人进行排查,同样地,应用程序也可以在多个地方安装钩子函数,对我们感兴趣的多个消息逐一进行排查,这样多个钩子过程就形成了钩子链,要注意的是,最后安装的钩子过程总是排列在该链的前面
消息钩子分类
进程内钩子 勾取本进程消息
全局钩子 勾取所有消息
相关函数
View Code#include"windows.h" #include<cstdlib> #include<iostream> using namespace std; VOID CALLBACK TimerProc(HWND hwnd,UINT msg ,UINT_PTR dwEvent,DWORD dwTime); void main() { MSG msg; //建立定时器 UINT TimerID = SetTimer(NULL,1,1000,(TIMERPROC)TimerProc); //消息循环 while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } system("pause"); } VOID CALLBACK TimerProc(HWND hwnd,UINT msg ,UINT_PTR dwEvent,DWORD dwTime) { cout<<"定时器消息回调函数调用成功"<<endl; //关闭定时器 if(KillTimer(NULL,dwEvent)) PostQuitMessage(0); }
运行结果:
![](http://pic002.cnblogs.com/images/2012/387401/2012111416130632.jpg)
相关文章推荐
- 消息钩子与定时器(VC_Win32)
- Win32全局钩子在VC中的实现
- Win32学习笔记——定时器消息
- WIN32学习——定时器消息
- VC++消息钩子编程
- VC++消息钩子编程
- VC++消息钩子编程
- 【VC编程】笔记3---使用Win32SDK编程,模仿MFC的消息映射处理机制
- Hook :VC++消息钩子编程
- VC++获取病毒的消息钩子
- VC下win32钩子
- 【转】VC++消息钩子编程
- VC++消息钩子编程
- vc自定义消息处理函数与定时器
- VC++ Hook截取鼠标点击窗口消息的问题!全局钩子
- VC/Win32 消息的获取GetMessage/PeekMessage
- VC中定时器的使用(SETTIMER,KILLTIMER,WM_TIMER消息)
- VC/Win32 消息的发送 SendMessage/PostMessage
- 【win32】day05-鼠标消息/定时器消息/菜单
- vc++ win32消息参考大全(待修改)