Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

createprocess возвращает нулевой хендл

6.8K
18 апреля 2008 года
artemkaint
60 / / 12.07.2006
тупо хочу запустить приложение из своей проги....пишу


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 спокойно работает
11
18 апреля 2008 года
oxotnik333
2.9K / / 03.08.2007
попробуй поменять 1-й и 2-й параметр местами
у меня вот так работает:
 
Код:
CreateProcess(NULL, PrnCmd.c_str(), 0, 0, NULL, 0, 0, 0, &si, &pi)
6.8K
18 апреля 2008 года
artemkaint
60 / / 12.07.2006
теперь вообще вылетать стал(((
5.3K
18 апреля 2008 года
Somebody
185 / / 24.12.2006
Цитата:
 
Код:
STARTUPINFO cif;
ZeroMemory(&cif,sizeof(cif));


А ещё cif.cb=sizeof(cif).

16K
23 апреля 2008 года
Alf&#225;
59 / / 12.01.2007
1. Перед использованием CreateProcess надо, если ничего особенного не хочется иметь в порождаемом процессе, заполнить структуру STARTUPINFO, вызвав GetStartupInfo
2. Существует ли указанный файл?
6.8K
23 апреля 2008 года
artemkaint
60 / / 12.07.2006
файл конечно существует..его можно тупо прочитать с помощью fopen....

не знаю правильно е ли решение нашел, но так хоть работает

TCHAR szCommandLine[]=TEXT("C:\\prog.exe");
CreateProcess(NULL,szCommandLine,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&cif,pi))

а что вы имели в виду "если ничего особенного не хочется иметь в порождаемом процессе "?
5.3K
23 апреля 2008 года
Somebody
185 / / 24.12.2006
Цитата: artemkaint
а что вы имели в виду "если ничего особенного не хочется иметь в порождаемом процессе "?


Я так понимаю, что имеется в виду то, зачем нужна startupinfo. Например, можно перенаправить вывод запускаемой консольной проги через пайп в свою прогу или можно запустить прогу на другом рабочем столе.

16K
23 апреля 2008 года
Alf&#225;
59 / / 12.01.2007
Прочитай(те) про эту структуруhttp://msdn2.microsoft.com/en-us/library/ms686331(VS.85).aspx
Другими словами: если не хочешь возиться и разбираться что и для чего то возьми от родительского процесса, вызвав GetStartupInfo
6.8K
24 апреля 2008 года
artemkaint
60 / / 12.07.2006
спасибо всем за ответы...щас разбираюсь с этими структурками...но для проекта пока остановился на простом запуске..
но возник вопросик может кто знает
http://forum.codenet.ru/showthread.php?t=47595
562
25 апреля 2008 года
tarekon
175 / / 19.08.2003
Цитата: artemkaint
файл конечно существует..его можно тупо прочитать с помощью fopen....

не знаю правильно е ли решение нашел, но так хоть работает

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.

39K
24 мая 2008 года
0523jk
3 / / 24.05.2008
[???????????????????????????????????????????????????????????,??????????????????????????????????????????????????????
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог