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 }