У меня возникли проблемы с использованием CreateProcess с аргументами командной строки. Я прочитал все сообщения, которые я нашел, но ни одно из решений не работало.Не удалось передать аргументы командной строки в CreateProcess
Вот что у меня есть:
std::string path = "C:\\my\\path\\myfile.exe";
std::wstring stemp = std::wstring(path.begin(), path.end());
LPCWSTR path_lpcwstr = stemp.c_str();
std::string params = " Param1 Param2 Param3";
STARTUPINFO info = { sizeof(info) };
PROCESS_INFORMATION processInfo;
CreateProcess(path_lpcwstr, LPTSTR(params.c_str()), NULL, NULL, TRUE, CREATE_NEW_PROCESS_GROUP, NULL, NULL, &info, &processInfo);
Код работает и myfile.exe (а QT приложение) открывается, но ARGC всегда 1. Я также попытался указать только первый параметр, как «C : \ my \ path \ myfile.exe Param1 Param2 Param3 ", но это тоже не сработало.
Любая помощь очень ценится.
Использование CreateProcessA и изменение параметров соответственно устраняет проблему, указанную одним из ответов.
STARTUPINFOA info = { sizeof(info) };
PROCESS_INFORMATION processInfo;
std::string path = "C:\\my\\path\\myfile.exe";
std::string params = " Param1 Param2 Param3";
CreateProcessA(path.c_str(), const_cast<char *>(config.c_str()) , NULL, NULL, TRUE, CREATE_NEW_PROCESS_GROUP, NULL, NULL, &info, &processInfo);
C и C++ - ** разные ** языки! – Olaf
Да, я знаю. Но вызов CreateProcess одинаковый как для C++, так и для C, поэтому я подумал, что я также использую C. Сожалею. – Androidicus
@deviantfan да. «не совместим с параметром типа« LPWSTR »« – Androidicus