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