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

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     BOOL ret = PathFileExists(strPath);//文件夹路径或文件名
2     if (ret)
3     {
4     //存在
5     }
6     else
7     {
8     //不存在
9     }    

 //递归创建文件夹   

#include <ImageHlp.h>
#pragma comment(lib, "imagehlp.lib")

1         strFullPath += _T("D:\1\2\33\");
2         char chPath[MAX_PATH];
3         WideCharToMultiByte(CP_ACP, 0, LPCTSTR(strFullPath), -1, chPath, MAX_PATH, NULL, NULL);
4         res = MakeSureDirectoryPathExists(chPath);
5         if (!res)
6         {
7             return FALSE;
8         }

 

原文地址:https://www.cnblogs.com/ckrgd/p/8474403.html