我正在尝试访问第三方应用程序中 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/