Я хочу использовать CreateProcess() для выполнения команды ADB, которая запускает приложение/действие. Он работает с использованием более простой функции системы (команды), но я хочу исключить создание окна командной строки системой(). Ниже приводится то, что я имею прямо сейчас. Я пробовал использовать различные CreateProcess(), такие как CreateProcessW и CreateProcessA, но безрезультатно.Использование CreateProcess для выполнения команды ADB
char prog[] = "C:\\Program Files\\Android\\sdk\\platform-tools\\platform-tools\\adb.exe";
char args[] = "adb shell am start -a android.intent.action.MAIN -n com.example.dmiller.myapplication/.Blankscreen";
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
CreateProcess((LPCWSTR)prog, (LPWSTR)args, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
Я получил это частично из этого ответа How to use createprocess to execute adb program in PATH? но когда команда должна быть выполнена в моей программе, ничего не происходит (при запуске системы (cmd.c_str()), соответствующее приложение запускается на подключенном устройстве) , Может ли кто-нибудь помочь? Альтернативные методы также приветствуются.
ОБНОВЛЕНИЕ: Я применил некоторые вещи из нижеприведенного сообщения, чтобы попытаться предоставить лучший вопрос. Код обновлен до моей последней версии.
CreateProcess doesn't pass command line arguments
_ "но это не работает для меня вообще." _ Разработайте это в своем вопросе, пожалуйста. Как, в частности, это не работает для вас? –
Я обновил ответ. – MartyMiller
_ «Я обновил ответ» _ Вы, вероятно, имели в виду вопрос. Что касается проверки документации ['CreateProcess()'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425 (v = vs.85) .aspx) снова. ИМХО у вас есть хотя бы один недопустимый указатель 'NULL' (' lpApplicationName'), переданный ему. –