4

我对 Windows API 编程相当陌生,我想用外行的话了解什么是子类化和 API Hooking。我正在做一个使用所有者绘制控件的项目,并且我的两个术语不断出现。现在我已经在 CodeProject.com 上看到了很多关于这些主题的详细教程,但问题是它们都使用 MFC,而我是在纯 Win32 中编码。如果有人知道上述主题的任何好的教程,请发布链接。还要尽量避免链接到 msdn,因为新手我很难理解那里写的内容。

4

2 回答 2

11

外行术语:子类化是通过替换窗口的窗口过程来完成的。它将 Windows 为将消息传递到窗口的调用重定向到您的函数,以便您首先看到这些消息。这使您可以更改窗口的行为,为其提供原始窗口所没有的新功能。这是一种非常常见的技术,操作系统直接支持,SDK 文章在这里

API 挂钩类似,但适用于 winapi 函数。这样您就可以更改在您未编写的进程中运行的代码的行为。任意地,您可以挂钩 CreateFile() 并更改传递的文件名或故意使其失败。这样做的情况少得多,而且要正确也更难,因为它不是像子分类那样的内置功能。 Microsoft 的 Detours是该技术的一个示例实现。

这两种技术都属于高级编程类别,如果你做得不好,你可能会陷入非常讨厌的麻烦。如果您现在无法阅读 MSDN 文章,请将其留在书架上,直到您准备好为止。

于 2012-05-12T11:38:51.200 回答
1

如果您正在编程原始 Win32,您可能应该得到 Petzold 的书“Programming Windows”。

于 2012-05-12T09:19:30.323 回答