char gszAppPath[MAX_PATH]={0};
char gszTempPath[MAX_PATH]={0};
//获取程序所在路径
const char * GetAppPath()
{
if (gszAppPath[0]==0)
{
::GetModuleFileName(::GetModuleHandle(NULL), gszAppPath, sizeof(gszAppPath));
char *p=strrchr(gszAppPath,'\\');
if (p)
{
p++;
*p=0;
}
}
return gszAppPath;
}
//创建目录,如果路径里的目录不存在会自动创建
BOOL CreateDirEx(const char *lpDir)
{
BOOL bRet=FALSE;
char path[2048];
if (lpDir[1]==':' && lpDir[2]=='\\')
{
path[0]=lpDir[0];
path[1]=lpDir[1];
path[2]=lpDir[2];
path[3]=0;
lpDir=lpDir+3;
}else{
strcpy(path,GetAppPath());
}
char *s=(char *)lpDir;
char *p;
while(*s)
{
p=strchr(s,'\\');
if (p==0) p=strchr(s,'/');
if (p)
{
char t=*p;
*p=0;
if (*s)
{
if (path[strlen(path)-1]!='\\') strcat(path,"\\");
strcat(path,s);
bRet=CreateDirectory(path,NULL);
}
*p=t;
s=p+1;
while(*s=='\\' || *s=='/')
{
s++;
}
}else{
if (*s)
{
if (path[strlen(path)-1]!='\\') strcat(path,"\\");
strcat(path,s);
bRet=CreateDirectory(path,NULL);
}
break;
}
}
return bRet;
}
//根据文件的完整路径创建目录
BOOL CreateDirFromPathFile(const char *lpPathFile)
{
BOOL bRet=FALSE;
char ch=0;
char *p=strrchr(lpPathFile,'\\');
char *p2=strrchr(lpPathFile,'/');
if (p<p2)
{
p=p2;
}
if (p)
{
ch=*p;
*p=0;
bRet=CreateDirEx(lpPathFile);
*p=ch;
}
return bRet;
}
//获取一个随机字符串名
void GetRandName(char *RandName, unsigned int max_len)
{
for (unsigned int i=0;i<max_len-1;i++)
{
RandName[i]='A'+rand()%26;
}
RandName[i]=0;
TRACE("RandName:%s",RandName);
}
//创建一个随机的临时目录
BOOL CreateTempPath()
{
BOOL bRet=FALSE;
char RandName[21];
for (n=0;n<10 &&!bRet; n++)
{
memset(gszTempPath,0,sizeof(gszTempPath));
if (::GetTempPath(MAX_PATH, gszTempPath))
{
::GetLongPathName(gszTempPath,gszTempPath,sizeof(gszTempPath));
TRACE("gszTempPath:%s", gszTempPath);
GetRandName(RandName,sizeof(RandName));
strcat(gszTempPath, RandName);
strcat(gszTempPath, "\\");
TRACE("Create Rand Temp Path: %s", gszTempPath);
bRet=CreateDirEx(gszTempPath);
}
}
if (bRet)
{
TRACE("目录创建成功");
}else{
TRACE("目录创建失败");
}
return bRet;
}