gpt4 book ai didi

c++ - 拦截 VBA 应用程序之间的消息

转载 作者:太空宇宙 更新时间:2023-11-04 16:14:58 26 4
gpt4 key购买 nike

我有一个用 VB 6.0 开发的应用程序。我无权访问其代码。此应用程序还通过其 dll 中提供的某些 API 公开其功能。有没有办法让我检查此应用程序 API 的使用者在 API 部署的任何地方调用的 API 的哪些方法。我希望 C# 程序只位于该目标环境中并拦截对该 API 的调用并通过服务将其报告回我的服务。我不会修改 API 或调用 API 的代码。这在 C# 中可行吗?还是我需要使用 C++?

更新

为了简单起见,假设它是一个用 VB 6 开发的简单 VB 应用程序,称为 SimpleAPP,它有一个在网格中显示记录的按钮。它通过使用返回记录数组的公共(public)方法 GetRecords(string ID) 调用组件 CMPA.dll 来实现这一点。我还有另外几个名为 CustomerApp.exe 和 AnotherCustomerApp.exe 的应用程序,它们也引用了 CMPA.dll,它们都调用相同的方法来获取记录。现在,我想开发一个名为 Interceptor.exe 的程序,它实际上位于部署 CustomerApp 和 AnotherCustomerApp 的环境中,并将在内部记录这两个应用程序中的哪一个调用了 CMPA dll 的公共(public)方法 GetRecords 并记录它发送的参数和检索到了什么结果。

最佳答案

我必须通过 google 才能找到我舌尖上的图书馆。

谷歌搜索发现了一些有趣的文章:1999 年微软研究院的一篇新文章 “Intercepting and Instrumenting COM Applications”和我记得的 1999 年 1 月的 Microsoft Systems Journal 文章,“Building a Lightweight COM Interception Framework” .

你要的图书馆大概是Microsoft Detours .我只在 C++ 中使用过它,而没有在 C# 中使用过它,而且我只将它用于拦截对 Windows API 函数的调用,而不是 COM 方法,所以我不能保证它非常适合。但是,如果需要的话,将这两种语言连接起来并不是什么火箭科学。

如果 Detours 不能满足您的需求,请查看引用的文章。他们很可能会产生一些您可以使用的框架。此外,他们还拥有您构建自己的网站所需的信息。然后,您还可以查看 ParkPlace 是否做过您想要的东西。曾经人们对“交叉关注”功能很感兴趣,ParcPlace 做了一些最有趣的研究,我记得。

关于c++ - 拦截 VBA 应用程序之间的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23649209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com