Таким образом, я использовал этот код для того, чтобы начать консольное приложение с аргументами:CreateProcess не начнет proccess с аргументами
#include <iostream>
#include <windows.h>
using namespace std;
void StartProgram(char argv[])
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
CreateProcess
(
TEXT("PlayerDebug.exe"),
(LPSTR)argv,
NULL,NULL,FALSE,
CREATE_NEW_PROCESS_GROUP | CREATE_NO_WINDOW,
NULL,NULL,
&si, &pi
);
};
int main()
{
StartProgram("sound.wav");
return 0;
}
«PlayerDebug.exe» отобразить аргументы, используемые для его вызова. Но когда я запускаю его с помощью CreateProcess, как я показал, он ничего не отображает. Я проверил и в Диспетчере задач, похоже, появляется, но до сих пор не отображает аргументы. Я также пытался написать cout << argv;
в функции void StartProgram(char argv[])
, и он вернул «sound.wav
», что является правильным. Но, похоже, аргумент не передается в PlayerDebug.exe, и я не знаю почему. Что я сделал не так? (я новичок в программировании на С ++)
Немного беспорядка с характерными типами здесь. Использование 'TEXT', как если бы вы столкнулись с ANSI или Unicode-текстом. Но затем противный бросок на «LPSTR». Тот факт, что код не будет компилироваться без кастомизации, должен был предупредить вас о проблеме. Ваш приказ не делает 'argv' фактически' LPSTR'. –