createprocess возвращает нулевой хендл
STARTUPINFO cif;
ZeroMemory(&cif,sizeof(cif));
PROCESS_INFORMATION pi;
ZeroMemory(&pi,sizeof(pi));
if (CreateProcess(LPCWSTR("C:\\prog.exe"),NULL,NULL,NULL,
FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&cif,&pi) == TRUE);
{
cout << "process" << endl;
cout << "handle " << pi.hProcess << endl;
cout << "dwProcessId " <<pi.dwProcessId<<endl;
}
пишет что хендл и процесс ИД равны 0...но сам процес видимо создает раз входит в if...но саму программу не запускает
причем пробовал WinExec спокойно работает
у меня вот так работает:
Код:
CreateProcess(NULL, PrnCmd.c_str(), 0, 0, NULL, 0, 0, 0, &si, &pi)
теперь вообще вылетать стал(((
Цитата:
Код:
STARTUPINFO cif;
ZeroMemory(&cif,sizeof(cif));
ZeroMemory(&cif,sizeof(cif));
А ещё cif.cb=sizeof(cif).
2. Существует ли указанный файл?
не знаю правильно е ли решение нашел, но так хоть работает
TCHAR szCommandLine[]=TEXT("C:\\prog.exe");
CreateProcess(NULL,szCommandLine,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&cif,pi))
а что вы имели в виду "если ничего особенного не хочется иметь в порождаемом процессе "?
Цитата: artemkaint
а что вы имели в виду "если ничего особенного не хочется иметь в порождаемом процессе "?
Я так понимаю, что имеется в виду то, зачем нужна startupinfo. Например, можно перенаправить вывод запускаемой консольной проги через пайп в свою прогу или можно запустить прогу на другом рабочем столе.
http://msdn2.microsoft.com/en-us/library/ms686331(VS.85).aspx
Другими словами: если не хочешь возиться и разбираться что и для чего то возьми от родительского процесса, вызвав GetStartupInfo
Прочитай(те) про эту структуру
Другими словами: если не хочешь возиться и разбираться что и для чего то возьми от родительского процесса, вызвав GetStartupInfo
спасибо всем за ответы...щас разбираюсь с этими структурками...но для проекта пока остановился на простом запуске..
Цитата: artemkaint
файл конечно существует..его можно тупо прочитать с помощью fopen....
не знаю правильно е ли решение нашел, но так хоть работает
TCHAR szCommandLine[]=TEXT("C:\\prog.exe");
CreateProcess(NULL,szCommandLine,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&cif,pi))
а что вы имели в виду "если ничего особенного не хочется иметь в порождаемом процессе "?
не знаю правильно е ли решение нашел, но так хоть работает
TCHAR szCommandLine[]=TEXT("C:\\prog.exe");
CreateProcess(NULL,szCommandLine,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&cif,pi))
а что вы имели в виду "если ничего особенного не хочется иметь в порождаемом процессе "?
Внимательное чтение MSDN дает следующую информацию:
The Unicode version of this function, CreateProcessW, can modify the contents of this string. Therefore, this parameter cannot be a pointer to read-only memory (such as a const variable or a literal string). If this parameter is a constant string, the function may cause an access violation.