确定当前的HINSTANCE?

时间:2009-11-17 16:16:35

标签: winapi hinstance

win32应用程序的HINSTANCE传递给WinMain,但有没有其他方法可以确定当前的HINSTANCE(如果你不知道,我是win32编程的新手!)?我需要在库中创建一个窗口(由于库是跨平台的),id不想传入它。

4 个答案:

答案 0 :(得分:76)

如果内存服务,GetModuleHandle(NULL);将返回实例句柄。

答案 1 :(得分:18)

__ImageBase是你的朋友,特别是在图书馆的情况下。

请注意,链接的博客文章(由R. Chen撰写,虽然与Brian Bondy关联的博文不同)值得一读(包括评论!)

答案 2 :(得分:8)

如果您使用的是MFC,则可以使用AfxGetInstanceHandle。

如果您不使用MFC,可以使用:GetWindowLong(hWnd,GWL_HINSTANCE)

答案 3 :(得分:0)

函数AfxGetStaticModuleState()可以解决问题。 如果你在dll中调用它,函数会返回dll的句柄,如果在exe中调用它会返回可执行文件的句柄。

DWORD size;
TCHAR fileName [MAX_PATH];
HMODULE hModule = AfxGetStaticModuleState()->m_hCurrentInstanceHandle;
::GetModuleFileName (hModule, fileName, size);