delphi - 绕过第 3 方循环 dll 依赖项?

标签 delphi dll circular-dependency cyclic-reference

我正在尝试访问第三方应用程序中 TE 编辑(来自 ter32.dll)中的文本。 (关于此的第一篇文章 here )我浏览了 API并尝试动态加载 dll 以访问函数。不幸的是,ter32.dll 的这个(售后返工)有大量依赖项。我尝试根据需要动态加载每个所需的 dll,但遇到了循环依赖。 ter32.dll 需要 x。 x 需要 y。 y 不会加载,因为它需要 x。我是否必须延迟静态加载这些?我当然希望不会,因为我不希望我的应用程序中出现开销/膨胀/依赖性。

1)我错过了什么?
2)有什么办法可以解决这个问题吗?
3)是否有人有任何其他方式来访问 ter32.dll 的 TE 编辑中的文本?

最佳答案

当您加载 DLL 时,加载器将为您加载所有依赖项。这些依赖项列在每个 DLL 的导入表中,加载程序会解析它们。您无需执行任何操作。

因此我无法理解您是如何得出您自己需要处理 DLL 依赖项的结论的。您是否以非标准方式加载此 DLL?您是否需要 WinSxS 依赖项的 list ,即是否需要 MS C 运行时?还有什么我们需要知道的吗?

总而言之,在我看来,将这个 DLL 加载到进程中不太可能对从具有自己独立虚拟内存的不同进程中提取文本有很大帮助。换句话说,我非常有信心您当前提取文本的尝试将会失败。绕过虚拟内存屏障的方法是使用 Hook 在其他进程中运行代码。

关于delphi - 绕过第 3 方循环 dll 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7115930/

相关文章:

delphi - 我可以通过 TOleContainer 或其他方式直接在 Delphi 应用程序中实例化 ActiveX 控件吗?

c# - EasyHook 注入(inject) - ArgumentException "The given 32-bit library doesn' t 存在”

SystemJS 中的 TypeScript 继承和循环依赖

Gradle 为运行时依赖创建循环依赖

c++ - 如何在 Linux 上使用 DLL 编译 Windows 应用程序

c++ - 惰性符号绑定(bind)失败 : symbol not found

delphi - 传递对 TObjectDictionary<TKey, TValue>.TValueEnumerator 的引用

Delphi SuperObject - 是否有一个(递归)搜索函数可以告诉在哪里可以找到值?

windows - 如何获取串行 COM 端口的状态

dll - 找不到类型或命名空间名称 `HolidayService2'。您是否缺少程序集引用?