确定当前的HINSTANCE?

Win32应用程序的HINSTANCE被传递给WinMain,但有没有其他的方式来确定当前的HINSTANCE(如果你不能说,我对于win32编程还是很新的!)? 我需要在库内部创build一个窗口(因为库是跨平台的),所以我不想传入它。

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

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

请注意,链接的博客文章(由R.陈,虽然不是由布莱恩·邦迪链接相同的职位)是值得阅读(包括评论!)

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

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

函数AfxGetStaticModuleState()有窍门。 如果你在一个dll中调用它,这些函数会返回到dll的句柄,如果在一个exe文件中的调用它返回到可执行文件的句柄。

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