#c #winapi #exception #createprocess
#c #winapi #исключение #createprocess
Вопрос:
В настоящее время я работаю над программой, которая запускает программу, указанную пользователем. переданный в виде wstring, введенный пользователем. Мой вопрос в том, как мне заставить его выдавать исключение или проверить, является ли «переданный» недействительным. В настоящее время, если пользователь вводит в «notepad.exe «он запускает его правильно, но если они вводят что-то поддельное, например «asdf» или что-то в этом роде, он все равно создает процесс.
try {
wchar_t* commandLine = new wchar_t [CP_MAX_COMMANDLINE];
wcsncpy_s(commandLine, CP_MAX_COMMANDLINE, passedIn.c_str(), passedIn.size() 1);
CreateProcess(NULL,
commandLine,
NULL, NULL,
false,CREATE_NEW_CONSOLE,NULL,
NULL,
amp;sinfo,
amp;pi);
delete [] commandLine;
}
catch (int e) {
cout << "An exception occurred. Exception Nr. " << e << endl;
}
Я надеялся, что мой catch поймает это, но это не так. Могу ли я что-нибудь сделать, чтобы проверить, исправлена ли она?
Спасибо!
Ответ №1:
Цитирую документацию функции (что должно было быть первым, что вы проверили):
Если функция выполнена успешно, возвращаемое значение ненулевое.
Если функция завершается с ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенную информацию об ошибке, вызовите
GetLastError
.
Итак, проверьте возвращаемое функцией значение.
Комментарии:
1. идеально! спасибо, я использовал GetLastError, когда моя программа случайно разбилась. Мне нужно подождать еще 6 минут, прежде чем я смогу пометить это как правильный ответ.