0

设想:

我们正忙于将第 3 方的 C++ SDK 打包为 DLL,以使我们组织中的其他开发人员更容易将此功能集成到他们自己的应用程序中(无论是 .net、delphi 等)

底层系统发送 Windows 消息以指示系统中发生的事件。需要处理这些事件,因为它们可能表明系统的状态以及下一步可以做什么。

问题:

在我们采用的方法(即包装第 3 方 SDK 的 DLL)的范围内处理这些消息的最佳方法是什么?想到的一些想法:

  1. 让使用 DLL 的应用程序捕获消息,然后通过函数调用将其传递回 DLL 进行处理——调用应用程序甚至可以捕获这些消息吗?
  2. 从 DLL 中生成一个线程,该线程实现一个消息泵,处理来自底层系统的这些消息并冒泡我们自己的自定义消息?

为 SDK 提供的所有示例代码都使用单个 Win32 应用程序,该应用程序实现消息泵并在应用程序的上下文中处理消息。

自从我使用本机 Win32 进行 Windows 开发以来,已经有很长时间了,希望得到一些建议。

4

1 回答 1

2

最简单的方法是制作代理 DLL。基本思路是用你自己的API DLL替换,替换你想要的函数,剩下的转发到原来的API DLL。您重命名原始 DLL 并使用 API DLL 的原始名称放入您的。为此,您需要导出函数。Microsoft 使用 Visual Studio 使这变得相当简单。

以下是如何导出函数:http: //msdn.microsoft.com/en-us/library/z4zxe9k8%28v=VS.100%29.aspx

如果您不知道他们正在使用的 API 的函数调用,有一个名为 PE Explorer 的实用程序可以告诉您所有有关函数的信息。一张营业执照的费用为 229 美元,但看起来物有所值: http: //pe-explorer.com/peexplorer-tour-function-view.htm

有一些方法可以替换内存中的 API 调用,但它很复杂,需要 API 已经处于活动状态(除非您正在密切监视系统)并且可能会触发防病毒程序。

于 2010-12-23T19:03:19.587 回答