我正在创建一个dll文件,同时在我的DLL加载时尝试自动调用此函数。我怎样才能做到这一点?它是一个Windows API主要功能,创建一个窗口,但我不知道它是如何做到的。我的第一个想法是将它放入DllMain函数,但我确信这是否有效以及填写变量的内容" HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow"
下面是我在加载dll时尝试自动调用的函数,我希望它能打开一个Window。感谢。
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow);
答案 0 :(得分:4)
DllMain function中您可以执行的操作存在限制:
调用需要除Kernel32.dll之外的DLL的函数可能会导致难以诊断的问题。例如,调用User,Shell和COM函数可能会导致访问冲突错误,因为某些函数会加载其他系统组件。
这排除了直接从DllMain创建窗口。但是,你可以做的是从你的DllMain启动一个线程,该线程可以创建一个窗口。
答案 1 :(得分:2)
DLL具有WinMain()
功能。您正在寻找DllMain()
或DllEntryPoint()
。在加载和卸载DLL时,Windows本身会调用它们。你不是自己打电话,而是实施它们。至于创建窗口,可以调用CreateWindow/Ex()
和相关函数。