【发布时间】:2021-04-13 00:24:50
【问题描述】:
我在执行我的 test.dll 的移动设备上运行我的 main.exe。现在,在 dll 启动后,我需要在 dll 仍在运行时对 main.exe 进行 wm_destroy 以进行交换。我对这个领域很陌生,我认为这违反了所有逻辑。但也许有办法在 dll 运行时更改 main.exe。
提前谢谢!
【问题讨论】:
标签: c++ dll windows-ce
我在执行我的 test.dll 的移动设备上运行我的 main.exe。现在,在 dll 启动后,我需要在 dll 仍在运行时对 main.exe 进行 wm_destroy 以进行交换。我对这个领域很陌生,我认为这违反了所有逻辑。但也许有办法在 dll 运行时更改 main.exe。
提前谢谢!
【问题讨论】:
标签: c++ dll windows-ce
加载 DLL 时,它会链接到主可执行文件的地址空间。它没有也不应该独立存在。 DLL 不会独立“运行”/“执行”。
您想要做的不是 DLL 的用途。您可能希望生成一个新的独立进程,然后从那里将 WM_DESTROY 发送到父进程。
【讨论】:
这甚至可以达到什么目的?如果 dll 自己运行,它是一个 .exe,应该有自己的 WinMain,而不仅仅是 DllMain。实际上它们具有相同的格式,.dll 和 .exe 都是 PEXE 文件并且可以导出。从非子进程的运行模块中获取导出函数的地址有点棘手,但某些分析器工具是这样工作的,包括 VS 分析器。
在 Windows 中,有一个实用程序,其唯一目的是运行一个 dll,rundll32,您可以将其作为子进程生成,但它需要提升权限。
【讨论】: