获取可执行程序当前路径目录,检查文件夹或文件是否存在,递归创建文件夹

GetModuleFileName
函数功能描述:获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载

DWORD WINAPI GetModuleFileName(
_In_opt_ HMODULE hModule, //装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前应用程序全路径。
_Out_ LPTSTR lpFilename, //是你存放返回的名字的内存块的指针,是一个输出参数
_In_ DWORD nSize //装载到缓冲区lpFileName的最大值
)

返回值:如果返回为成功,将在lpFileName的缓冲区当中返回相应模块的路径,如果所设的nSize过小,那么返回仅按所设置缓冲区大小返回相应字符串内容。如果函数失败,返回值将为0

使用方法举例

//获取根目录
CString getModulePath()          
{
    //方式1
    CString strModule;
    HMODULE hmod = GetModuleHandle(NULL);//获取一个应用程序或动态链接库的模块句柄。只有在当前进程的场景中,这个句柄才会有效。
    GetModuleFileName(hmod, strModule.GetBuffer(MAX_PATH), MAX_PATH);//MAX_PATH是C语言运行时库中通过#define指令定义的一个宏常量,它定义了编译器所支持的最长全路径名的长度。
    strModule.ReleaseBuffer();//在使用GetBuffer后使用

    //方式2
    //char  exepath[MAX_PATH];
    //CString  strModule;
    //memset(exepath, 0, MAX_PATH);
    //GetModuleFileName(NULL, exepath, MAX_PATH);
    //strModule = exepath;

    return strModule;
}

//检查文件夹是否存在,不存在则创建它

 1     // 检查文件夹是否已存在
 2     if (!PathIsDirectory(m_strPath))
 3     {
 4         // 如果文件夹不存在,创建它
 5         if (!CreateDirectory(m_strPath, NULL))
 6         {
 7             CString strMsg;
 8             strMsg.Format(_T("无法创建文件夹--%s"), m_strPath);
 9             AfxMessageBox(strMsg);
10             return FALSE;
11         }
12     }

 

posted @ 2018-02-26 17:44  ckrgd  阅读(309)  评论(0)    收藏  举报