找目錄及設定目錄

在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 取得錯誤訊息.

 

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