《MFC编程》:钩子函数
- 《MFC编程》:钩子函数
- 钩子函数简介
- 作用
- 类型
- MFC窗口如何创建
- 代码书写
《MFC编程》:钩子函数
钩子函数简介
钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。
作用
WINDOWS的钩子函数可以认为是WINDOWS的主要特性之一。利用它们,您可以捕捉您自己进程或其它进程发生的事件。通过“钩挂”,您可以给WINDOWS一个处理或过滤事件的回调函数,该函数也叫做“钩子函数”,当每次发生您感兴趣的事件时,WINDOWS都将调用该函数。
类型
一共有两种类型的钩子:局部的和远程的。
局部钩子仅钩挂您自己进程的事件。
远程的钩子还可以将钩挂其它进程发生的事件。
远程的钩子又有两种:
- 系统级的全局钩子;
- 线程级的钩子。
全局钩子函数需要定义在 DLL 中, 线程级的钩子开始比较简单。
其实,钩子函数就三个:
- 设置钩子: SetWindowsHookEx
- 释放钩子: UnhookWindowsHookEx
- 继续钩子: CallNextHookEx
在线程级的钩子中经常用到 GetCurrentThreadID 函数来获取当前线程的 ID。
MFC窗口如何创建



代码书写

-
创建一个win32程序

-
选择窗口程序,并且是一个空项目,点击“完成”

-
成功创建一个win32空项目

-
进入程序属性界面,更改字符集为多字节字符编码

-
更改使用MFC库,静态动态均可

源文件新建MFCCreate.cpp。

代码:
#include<afxwin.h>
class CMyFrameWnd : public CFrameWnd {};
class CMyWinApp : public CWinApp {
public:virtual BOOL InitInstance();
};
CMyWinApp theApp; // 爆破点BOOL CMyWinApp::InitInstance() {CMyFrameWnd* pFrame = new CMyFrameWnd;pFrame->Create(NULL, "MFCCreate");m_pMainWnd = pFrame;pFrame->ShowWindow(SW_SHOW);pFrame->UpdateWindow();return TRUE;
}
程序使用的类的结构图:






![MFC最详细入门教程[转载]](https://img-blog.csdnimg.cn/20191207225234302.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZyZWVraW5nMTAx,size_16,color_FFFFFF,t_70)










