0

我正在制作一个 dll 文件,同时尝试在加载我的 DLL 时自动调用此函数。我怎样才能做到这一点?这是一个创建窗口的 Windows API 主函数,但我不知道怎么做。我的第一个想法是将它放入 DllMain 函数中,但我非常确定这是否可行,以及如何填写变量“HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow”

下面是我试图在加载我的 dll 时自动调用的函数,我希望它能够打开一个窗口。谢谢。

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow);

4

2 回答 2

4

您可以在DllMain 函数中执行的操作有一些限制:

调用需要除 Kernel32.dll 之外的 DLL 的函数可能会导致难以诊断的问题。例如,调用 User、Shell 和 COM 函数可能会导致访问冲突错误,因为某些函数会加载其他系统组件。

这排除了直接从 DllMain 创建一个窗口。但是,您可以做的是从 DllMain 启动一个线程,该线程可以创建一个窗口。

于 2014-08-08T02:51:45.697 回答
2

DLL 确实有一个WinMain()功能。 DllMain()或者DllEntryPoint()是您正在寻找的东西。Windows 本身在加载和卸载 DLL 时调用它们。您不自己调用它们,而是实现它们。至于创建一个窗口,你调用CreateWindow/Ex()和相关的函数。

于 2014-08-08T02:26:51.060 回答