獲取當前運行程序所在路徑(exe/dll)

GetModuleFileName() 函數返回當前進程已加載可執行或DLL文件的完整路徑名(以’\0’終止),該模塊必須由當前進程地址空間加載。若要獲取另一個已加載模塊的文件路徑,可以使用GetModuleFileNameEx()函數。

DWORD WINAPI GetModuleFileName(
  _In_opt_  HMODULE hModule,   //應用程序或DLL實例句柄,NULL則爲獲取當前程序可執行文件路徑名
  _Out_     LPTSTR lpFilename, //接收路徑的字符串緩衝區
  _In_      DWORD nSize        //接收路徑的字符緩衝區的大小
);

注意:   
 MAX_PATH宏爲編譯器所支持的最長全路徑名的長度,VC++6.0下爲260。
    '\\'即爲'\'。

例:

void CTestIMC3MoveDlg::GetAppFilePath(CString& strPath)
{
	GetModuleFileName(NULL, strPath.GetBufferSetLength(MAX_PATH+1), MAX_PATH);
	strPath.ReleaseBuffer();
	int nPos = strPath.ReverseFind('\\');
	strPath = strPath.Left(nPos);
}
調用:
	CString sPath;
	GetAppFilePath(sPath);
	CString strDllName = sPath + _T("\\ImcMoveCard4.dll");

另外:
MFC中CFile類的成員函數:CFile::GetFilePath(); //獲取指定文件所在的目錄
HMODULE GetModuleHandle(LPCTSTR lpModuleName)返回加載到當前進程地址空間的可執行文件或DLL文件的句柄,若參數爲NULL,則返回當前進程的句柄(當前應用程序實例句柄)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章