我已尝试使用Stackoverflow中的一些解决方案,但我无法使其工作,我想从C ++启动.LOG(.txt文件),但包含它的路径文件夹可能有空格,所以当我尝试启动它时,我得到一个错误,说它无法找到该文件,因为pah(包含空格)是错误的,这是我的代码看起来像:
void Log (unsigned int Code,...)
{
char currdate[11] = {0};
SYSTEMTIME t;
GetLocalTime(&t);
sprintf(currdate, "%02d:%02d:%02d", t.wHour, t.wMinute, t.wSecond);
PROCESSENTRY32 pe32;
FILE* FileHwnd1;
FileHwnd1 = fopen("TEST.log","a+");
fprintf(FileHwnd1,"[%s] Code: %X\n",currdate,Code);
fclose(FileHwnd1);
char buffer[MAX_PATH];
GetModuleFileName( NULL, buffer, MAX_PATH);
char Path[50];
wsprintf(Path,"start %s\\AntiHack.log",buffer);
system(Path);//Here is where i get the containing spaces path error
}
感谢。
答案 0 :(得分:2)
我建议你完全避免系统调用,然后自己启动进程。
还有其他方法可以做到这一点,但正如你现在所注意到的那样,走一条路往往会有陷阱。上面介绍了Explorer.exe如何启动扩展的关联过程。
答案 1 :(得分:0)
您可以尝试:
wsprintf(Path,"start \"\" \"%s\"\\\AntiHack.log",buffer);