Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

Ошибка при createprocess   Найти похожие ветки 

 
Pasha L ©   (2005-09-26 00:05) [0]

Здравствуйте. Возникла непонятная проблема с createprocess. Вызываю его а мне выползает сообщение об ошибке.
The application failed to initialize properly (0xc0000142). Click on OK to terminate the application.
И при этом createprocess возвращает true. При вызове winexec для запуска той же проги всё происходит без запинки. Но в случае с winexec мне не дается хэндл запущенного процесса, что меня не устраивает. Пробовал ещё несколько программ. Вылезает эта же ошибка.


 
Lamer@fools.ua ©   (2005-09-26 00:28) [1]

>>Pasha L ©   (26.09.05 00:05)

Код засекречен?


 
Lamer@fools.ua ©   (2005-09-26 00:28) [2]

P.S. В смысле, исходный код.


 
jack128 ©   (2005-09-26 00:34) [3]

из хелпа
CreateProcess returns without waiting for the new process to finish its initialization. For example, the creating process would use WaitForInputIdle before trying to find a window associated with the new process


 
Leonid Troyanovsky ©   (2005-09-26 09:58) [4]


> Pasha L ©   (26.09.05 00:05)  

>  Вызываю его а мне выползает сообщение об ошибке.
> The application failed to initialize properly (0xc0000142).


Спорю на пару бит, что TStartupInfo не инициализирована (properly).

--
Regards, LVT.


 
Pasha L ©   (2005-09-26 18:34) [5]

procedure docommand(aname,coms:string);
var
 secattr:TSecurityAttributes;
 procinfo:TProcessInformation;
 startinfo:TStartupInfo;
 nowpath:string;
begin
 with secattr do begin
   nLength:=sizeof(secattr);
   lpSecurityDescriptor:=nil;
   bInheritHandle:=bool(true);
 end;
 with startinfo do begin
   cb:=SizeOf(startinfo);
   dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
   wShowWindow:=SW_HIDE;
 end;
 nowpath:=extractfilepath(paramstr(0));
 nowpath:=copy(nowpath,1,length(nowpath)-1);
 createprocess(pchar(aname),pchar(aname+" "+coms),@secattr,@secattr,bool(true),0,nil,pchar(nowpath),startinfo,procinfo);

В частности вызываю docommand("brcc32.exe","my.rc"). Оба эти файла находятся в папке с запускаемой программой.


 
Leonid Troyanovsky ©   (2005-09-26 18:48) [6]


> Pasha L ©   (26.09.05 18:34) [5]

>  with startinfo do begin
>    cb:=SizeOf(startinfo);
>    dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
>
>    wShowWindow:=SW_HIDE;


Хе-хе. Где мои пара битов? Обнулять startinfo будет Пушкин?
Как и хендлы закрывать?

Кроме того, Win32Check(CreateProcess()).

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-09-26 18:57) [7]


> Pasha L ©   (26.09.05 18:34) [5]

> эти файла находятся в папке с запускаемой программой.


И еще: раз уж brccc32 помещен в ту самую библиотеку,
то откуда он узнает про нужные ему библиотеки?
Или они тоже туда помещены в ту самую папку? ;)

--
Regards, LVT.


 
GuAV ©   (2005-09-26 19:07) [8]

И зачем STARTF_USESTDHANDLES, если ни не заданы ?


 
Pasha L ©   (2005-09-26 23:31) [9]

Leonid Troyanovsky ©   (26.09.05 18:57) [7]
Для работы brcc32.exe ничего вспомогательного не требуется.

> Обнулять startinfo будет Пушкин?
> Как и хендлы закрывать?
Поясните, пожалуйста. Что именно обнулять? Какие хэндлы закрывать?


 
Piter ©   (2005-09-27 00:26) [10]

Pasha L ©   (26.09.05 23:31) [9]
Что именно обнулять?


видимо, startinfo


 
Германн ©   (2005-09-27 01:24) [11]

2 Pasha L ©   (26.09.05 23:31) [9]
>Что именно обнулять?

У тебя startinfo - локальная переменная процедуры docommand.
Имхо, область памяти, на которую она указывает заполнена какими-то более - менее случайными значениями.


 
Leonid Troyanovsky ©   (2005-09-27 09:02) [12]


> Pasha L ©   (26.09.05 23:31) [9]

> Поясните, пожалуйста. Что именно обнулять? Какие хэндлы
> закрывать?


Такие вопросы, IMHO, для "Начинающих".

FillChar(StartInfo, SizeOf(StartInfo), 0)
или, хотя бы, GetStartupInfo(StartInfo)

Закрывать надо CloseHandle - procinfo.hProcess & procinfo.hThread
сразу после того, как они стали более не нужны.

--
Regards, LVT.


 
Pasha L ©   (2005-09-27 17:15) [13]


> Такие вопросы, IMHO, для "Начинающих".

Не спорю, но не буду же я на полтемы обрываться и делать продолжение на форуме "для начинаючих"

А за ответ с разъяснением БОШЬШОЕ СПАСИБО



Страницы: 1 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.05 c
2-1127653086
Vitaliy
2005-09-25 16:58
2005.10.23
Комментарии и их последствия


14-1128497676
konda
2005-10-05 11:34
2005.10.23
Глюк в IE6


3-1126712886
terra0
2005-09-14 19:48
2005.10.23
ADO&SQL запрос с параметром


14-1128424715
Layner
2005-10-04 15:18
2005.10.23
Как включить в трее Ru/En.. (XP/Sp2)


4-1124343984
Shopot
2005-08-18 09:46
2005.10.23
Давайте вместе разберемся с TAPI.