Я пытаюсь создать что-то похожее на cmd с Microsoft Visual Studio Express 2013 для Windows Desktop в C++, и одна из моих функций должна начать процесс, такой как открытый skype, набрав «skype.exe». Я искал в Интернете и нашел функцию CreateProcess, которая должна была выполнить эту работу для меня. когда я создал функцию, которая получает значение класса, которое я создал под названием «Линия» (имя класса, но оно не является обычным) и использовало функцию CreateProcess так, как показано ниже, мне нужно ввести мой «cmd» start skype.exe ", но я хочу, чтобы он работал, как в обычном cmd, написав только« skype.exe », как я могу это сделать? (l.parameter это просто строка, содержащая слово скайп)с помощью функции CreateProcess
void execute(Line l){
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
LPSTR s = const_cast<char *>(l.parameter.c_str());
if (!CreateProcess(NULL, s, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
printf("CreateProcess failed (%d).\n", GetLastError());
return;
}
// Wait until child process exits.
WaitForSingleObject(pi.hProcess, INFINITE);
// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);}
Поскольку код компиляции с 'LPSTR', то' UNICODE' явно не определены, а версия Анси из 'CreateProcess()' не изменяет буфер команд, только версия Unicode делает. Кроме того, запуск 'start', поскольку команда не будет работать в любом случае. –