首先我必須提到,我是絕對的C++初學者,所以不要扔任何石頭。我想借助ShellExecute殺死一個外部程序並儘可能簡單地刪除一個日誌文件。在Linux上我可以使用系統(並且它工作的很好),但是在Windows上一個令人討厭的dosbox彈出。在很多谷歌的幫助下,我設法寫下如下代碼:初始化動態長度的wchar_t
wchar_t command[1024] = L"b";
swprintf_s(command, _countof(command), L"/C TASKKILL /IM ExternalProgram.exe /F & del \"%S\"", logFilePath);
ShellExecute(NULL, L"open", L"cmd.exe", command, NULL, SW_HIDE);
logFilePath是char。只要我使用短路徑e,此代碼就可以工作。 G。 c:\MyProgram\logfile.txt
。如果日誌文件的路徑更長e。 G。 c:\program files\My Program\anything\more\xxx\...\logfile.txt
該程序崩潰。我明白,1024是變量的最大長度,但我如何告訴C我不知道長度?
我試圖通過使用strlen(logFilePath)+50
來解決它,但這隻給我編譯錯誤。什麼是正確的方法?
我用你的第二個解決方案。我想,在開始使用C++ ish魔法之前,我會先從cish的東西開始。謝謝! – Oliver