【发布时间】:2021-05-19 19:44:38
【问题描述】:
朋友
我有一个小问题。我试图在 RAD Studio 中创建一个带有表单的 delphi Dll,但我不知道 如何使用 DllMain 加载它。我想在运行时将这个 Dll 注入到一个第三方进程中。
我用没有问题的表单创建了 Dll 项目,但我找不到任何与“如何使用 DllMain 加载它”相关的好东西,或者至少我发现的教程/东西对我没有帮助(或者我我只是愚蠢)。 有人能帮我吗?给我一些提示或我可以学习的网站/视频?
我真的很感谢你们的时间! =)
【问题讨论】:
-
DLLMain 在加载 DLL 时由 Windows 调用。你永远不会自己调用它。
-
是的,但我想在第三方进程中加载我的表单,以防出现 DLL_PROCESS_ATTACH。
-
你想做什么没关系——你不能自己调用DLLMain。
-
无论如何,在
DllMain()中调用 UI 函数是不安全的。请参阅DllMain Best Practices:“您永远不应该在 DllMain 中执行以下任务:...调用 User32.dll 或 Gdi32.dll 中的函数。某些函数会加载另一个可能未初始化的 DLL。 " 猜猜CreateWindow/Ex()在哪个图书馆?提示:user32.dll。因此,请勿尝试直接在DllMain()中显示 UI 表单。 -
不过,如果您要遵循最佳实践,您可以在单元的初始化部分编写代码。