我是 Windows API 编程的新手,我想通俗地了解什么是子类化和 API Hook 。我正在做一个使用所有者绘制的控件的项目,并且不断出现两个术语。现在我已经在 CodeProject.com 上看到了很多关于这些主题的详细教程,但问题是它们都使用 MFC,而我是在纯 Win32 中编码的。如果有人知道上述主题的任何好的教程,请发布链接。还要尽量避免链接到 msdn,作为新手,我很难理解那里写的内容。
最佳答案
通俗点说:子类化就是通过替换一个窗口的窗口过程来实现的。它将 Windows 为将消息传递到窗口而进行的调用重定向到您的函数,以便您首先看到这些消息。这使您可以更改窗口的行为,赋予它原始窗口所没有的新功能。这是一种非常常见的技术,直接由操作系统支持,SDK 文章 is here .
API Hook 类似,但适用于 winapi 函数。这样您就可以更改在您的进程中运行但您未编写的代码的行为。您可以任意 Hook CreateFile() 并更改传递的文件名或故意使其失败。这样做远不太常见,而且也更难做到正确,因为它不像子类化那样是一种内置功能。 Microsoft's Detours是该技术的示例实现。
这两种技术都属于高级编程类别,如果操作不当,您可能会陷入非常棘手的麻烦。如果您现在无法阅读 MSDN 文章,请将其搁置,直到您准备好阅读为止。
关于windows - 什么是子类化和 API Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10562055/