1. 程式人生 > >獲取應用程式所有絕對路徑

獲取應用程式所有絕對路徑

程式碼 :

#define _MAX_PATH   260 /* max. length of full pathname */

CString GetDirectory()
{
    TCHAR sFilename[_MAX_PATH];
    TCHAR sDrive[_MAX_DRIVE];
    TCHAR sDir[_MAX_DIR];
    TCHAR sFname[_MAX_FNAME];
    TCHAR sExt[_MAX_EXT];
    GetModuleFileName

(AfxGetInstanceHandle(), sFilename, _MAX_PATH);
    _wsplitpath_s(sFilename, sDrive, sDir, sFname, sExt);
    CString csVal(CString(sDrive) + CString(sDir));
    if (csVal.Right(1) != _T('\\'))
        csVal += _T("\\");
    return csVal;

}

1. AfxGetInstanceHandle()  :

這個函式使你能夠獲得當前應用程式的例項控制代碼。AfxGetInstanceHandle總是返回代表你的可執行檔案(.EXE)的HINSTANCE值,除非它從與MFC的USRDLL版本連線的DLL內呼叫的。在這種情況下,它返回的是DLL的HINSTANCE值。


2. GetModuleFileName函式為windows的API函式,使用的時候需要包含windows.h的標頭檔案;MAX_PATH是一個巨集定義,值為260。執行完GetModuleFileName函式之後,szPath陣列中儲存的就是執行程式當前的絕對路徑。

假設執行程式xp.exe的絕對路徑為C:\Program Files\Dll\xp.exe,那麼szPath陣列中儲存的值就是C:\Program Files\Dll\xp.exe。

3._wsplitpath_s()函式:

函式功能:分割路徑為 磁碟符,路徑,檔名, 副檔名 四部分。

  _wsplitpath_s(sFilename, sDrive, sDir, sFname, sExt);

 如: sFilename = "C:\\TEST\DIR\TEST.exe"

執行結果:sDrive:   C:

         sDir:    \\TEST\DIR

         sFname:  TEST

         sExt:    .exe