먼저 C++ 초보자이므로 돌을 던지지 마십시오. ShellExecute를 사용하여 외부 프로그램을 종료하고 가능한 한 간단하게 로그 파일을 삭제하려고합니다. 리눅스에서는 필자가 시스템을 사용할 수 있지만 (완벽하게 작동합니다), 창문에서는 짜증나는 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가 문자입니다 : 구글의 많은 도움으로이 코드를 작성하는 관리. 이 코드는 짧은 경로 e를 사용하는 한 작동합니다. 지. c:\MyProgram\logfile.txt
. 로그 파일 경로가 더 긴 경우 e. 지. c:\program files\My Program\anything\more\xxx\...\logfile.txt
프로그램이 충돌합니다. 나는 변수의 최대 길이를 1024로 알고 있지만 C에 길이를 모르는 것을 어떻게 알 수 있습니까?
strlen(logFilePath)+50
을 사용하여이 문제를 해결하려고했지만 컴파일 오류 만 발생했습니다. 올바른 방법은 무엇입니까?
두 번째 솔루션을 사용했습니다. 제 생각에, 나는 C++ ish magic으로 가기 전에 cish stuff으로 시작할 것입니다. 고맙습니다! – Oliver