Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Вниз

Ошибка при 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.036 c
2-1127749588
erika
2005-09-26 19:46
2005.10.23
fb


1-1128024783
lesee
2005-09-30 00:13
2005.10.23
Отбросить тень TLabel и получит её регион и регин


3-1125922257
Starcom
2005-09-05 16:10
2005.10.23
Чтоб при вводе запроса небыло подвязки к регистру?


4-1124613303
Андрей Молчанов
2005-08-21 12:35
2005.10.23
WM_QUERYENDSESSION


14-1128183159
syte_ser78
2005-10-01 20:12
2005.10.23
12 дней не курю!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский