1. 程式人生 > >DLL 獲取自身的檔案路徑

DLL 獲取自身的檔案路徑

在DLL中獲取DLL自身的檔案路徑:

//獲取本DLL的檔案路徑
TCHAR szCurrent[520] = { 0 };
HMODULE hModule = GetModuleHandle(_T("YourDllName.dll"));
if (hModule)
{
	GetModuleFileName(hModule/*NULL*/, szCurrent, _countof(szCurrent)-1);
}

類似於下面這些方法(MFC版本),實測並不能獲取DLL自身路徑,而獲取的是載入該DLL的應用程式路徑:

TCHAR szDLLFullPath[MAX_PATH + 1];
GetModuleFileName(AfxGetApp()->m_hInstance, szDLLFullPath, MAX_PATH);
//或
//GetModuleFileName(::AfxGetResourceHandle(), szDLLFullPath, MAX_PATH);
//或
//GetModuleFileName(::AfxGetInstanceHandle(), szDLLFullPath, MAX_PATH);

還有這個MFC版本的也是:

TCHAR szCurrent[520] = { 0 };
AFX_MANAGE_STATE(AfxGetStaticModuleState());
GetModuleFileName(AfxGetResourceHandle(), szCurrent, 512);