获取应用程序所有绝对路径

代码 :

#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






猜你喜欢

转载自blog.csdn.net/u010096608/article/details/80410372