0

我在执行我的 test.dll 的移动设备上运行我的 main.exe。现在,在 dll 启动后,我需要在 dll 仍在运行时对 main.exe 进行 wm_destroy 以进行交换。我对这个领域很陌生,我认为这违反了所有逻辑。但也许有一种方法可以在 dll 运行时更改 main.exe。

提前谢谢!

4

2 回答 2

0

加载 DLL 时,它会链接到主可执行文件的地址空间。它没有也不应该独立存在。DLL 不会独立“运行”/“执行”。

您想要做的不是 DLL 的用途。您可能想要生成一个新的独立进程,然后从那里将 WM_DESTROY 发送到父进程。

于 2021-01-07T09:37:00.373 回答
0

这甚至可以起到什么作用?如果 dll 自己运行,它是一个 .exe,应该有自己的 WinMain,而不仅仅是 DllMain。实际上它们具有相同的格式,.dll 和 .exe 都是 PEXE 文件并且可以导出。从非子进程的正在运行的模块中获取导出函数的地址有点棘手,但这就是某些分析器工具的工作方式,包括 VS 分析器。

在 Windows 中,有一个实用程序,其唯一目的是运行一个 dll,rundll32,您可以将其作为子进程生成,但它需要提升的权限。

于 2021-01-07T09:37:05.073 回答