delphi 绕过第三方循环dll依赖?

jrcvhitl  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(142)

我试图在第三方应用程序中访问TE Edit(来自ter32.dll)中的文本。(关于这个here的第一篇文章)我浏览了API并试图动态加载dll以访问函数。不幸的是,ter32.dll的这个(售后返工)有很多依赖项。我试着根据需要动态加载每个所需的dll,但遇到了循环依赖。ter32.dll需要x. x需要y。y不会加载,因为它需要x。我是否必须延迟静态加载这些文件?我当然希望不是,因为我不想在我的应用程序的开销/膨胀/依赖。
1)我错过了什么?
2)有什么办法可以解决吗?
3)有没有人有任何其他方式访问ter32.dll的TE编辑中的文本?

e5nszbig

e5nszbig1#

当你加载一个DLL时,加载器将为你加载所有的依赖项。这些依赖项列在每个DLL的导入表中,加载程序会解析它们。你什么都不需要做。
因此,我不明白你是如何得出结论,你自己需要处理DLL依赖关系。您是否正在以非标准方式加载此DLL?您是否需要WinSxS依赖项的清单,即是否需要MS C运行时?还有什么我们需要知道的吗
尽管如此,在我看来,将这个DLL加载到你的进程中不太可能对从一个有自己独立虚拟内存的不同进程中提取文本有多大帮助。换句话说,我很有信心,你目前试图提取文本将失败。绕过虚拟内存屏障的方法是使用钩子在另一个进程中运行代码。

相关问题