在MFC的程式開發中,常會找目前的路徑及設定路徑,找了很久,發現一些常用的API
1. GetModuleFileName() : 找當前執行程序的路徑
DWORD WINAPI GetModuleFileName( __in_opt HMODULE hModule, __out LPTSTR lpFilename, __in DWORD nSize);
參數:
hModule [in, optional] : 找當前執行程式的路徑,這個參數設為NULL。 lpFilename [out] : 回傳的路徑。 nSize [in] : lpFilename的size。
相關說明可參考以下路徑
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspx
Ex:
char mFilename[512] = {'0'};
char mPath[1024] = {'0'};
GetModuleFileName(NULL, mFilename, sizeof(mFilename));
CString Path;
Path.Format("%s", mFilename);
Path = Path.Left(Path.ReverseFind('\\'));//解析运行程序所在文件夹的目录
CString configFile=_T(Path + "\\ErrorCode.ini");
2. SetCurrentDirectory() : 變更目前系統設定的路徑。
BOOL WINAPI SetCurrentDirectory( __in LPCTSTR lpPathName);
參數 :
lpPathName [in] : 所要設定的路徑。
回傳值 :
設定成功,傳回值不為0.
設定不成功,傳回值為0. 使用 GetLastError 取得錯誤訊息.
範例 :
#define BUFSIZE MAX_PATH
TCHAR Buffer[BUFSIZE];
if( !SetCurrentDirectory(Buffer) )
{
printf("SetCurrentDirectory failed (%d)\n", GetLastError());
return;
}
3. GetCurrentDirectory() : 取得當前程序的路徑
DWORD WINAPI GetCurrentDirectory( __in DWORD nBufferLength, __out LPTSTR lpBuffer);
參數 :
-
nBufferLength [in] : buffer的大小。
lpBuffer [out] : 路徑的buffer,以TCHAR定義buffer。
回傳值 :
設定成功,傳回值不為0.
設定不成功,傳回值為0. 使用 GetLastError 取得錯誤訊息.