【发布时间】:2011-05-16 13:41:32
【问题描述】:
我正在尝试理解 C++ 中的事件挂钩。我知道事件是什么,我在 Java、C# 和 Javascript 中经常使用它们。
我遇到的麻烦是查找有关全局挂钩、dll 注入、没有 DLL 的全局挂钩等内容的文档和教程。
假设我想遍历 FireFox 中的浏览器 tabis .. 我是否需要希望 FireFox 有一个用于 C++ 的 API?或者假设我想在用户打开新标签页时做某事,我是否需要使用 FireFox 在其 API 中提供的挂钩?
以上只是一个示例,因此人们知道我想要学习/理解什么。我的想法是否正确?
我在一个论坛上看到了一个帖子,在过去的 2 个小时里我很感兴趣。我总是说,一个棘手的挑战,或者一个新的挑战,会让程序员变得更强大。
非常感谢任何资源或任何帮助。
【问题讨论】:
-
C++ 本身没有“事件”或“事件挂钩”之类的东西。不过,它可能是某些框架的一部分。 “DLL 注入”暗示您可能指的是某些 WinAPI 功能。
-
Firefox(或任何其他应用程序)是否提供某种特定语言的 API,完全由他们的开发团队决定。他们可以选择以任何语言(或多种语言,或根本不提供)提供 API。
-
第二段让我觉得你在谈论 Windows。如果是这样,请澄清您的问题。 Windows 有一个钩子机制,甚至可以描述为“没有 DLL 的全局钩子”。但是,它与 C++ 无关(它是一个系统 API,与语言无关)。
-
@Vlad 经典示例是一个按键记录器,它使用 WinAPI 提供的 DLL 和挂钩。我看到的所有教程都未能提供有关其他 WinAPI 挂钩的信息,也未能解释 DLL 注入。
-
@atzz 所以 C++ 没有事件或钩子,但 Windows 和其他应用程序(如果 api 可用)有吗?是的,我说的是 Windows。对不起,我没有提到,但只有当你和弗拉德提到它时它才被曝光。我正在慢慢地涵盖更多关于这个主题的内容。