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

Вниз

Получение кода возврата процесса из консольного приложения   Найти похожие ветки 

 
jav   (2003-08-04 17:52) [0]

Требуется запустить процесс (внешнюю программу) на выпонение и получить код возврата программы для последующей обработки. При этом необходимо дождаться окончания процесса...


 
HolACost   (2003-08-04 19:53) [1]

ИМХО CreateProcess!


 
Evgeny V   (2003-08-05 05:35) [2]

Еще к CreateProcess добавлю WaitForSingleObject - ожидание завершения и GetExitCodeProcess


 
jav   (2003-08-05 16:20) [3]

CreateProcess - это ясно и так... Приложение консоль - для него WaitForSingleObject не работает... (источник - Справочная система Delphi) Есть еще варианты? :)


 
Игорь Шевченко   (2003-08-05 16:56) [4]

Работает и прекрасно, в том числе и для консольных приложений


 
jav   (2003-08-05 17:24) [5]

>Игорь Шевченко - хотите сказать, что справочной системе можно не верить?


 
HolACost_   (2003-08-05 17:29) [6]

Ага! Смотря что вы в качестве объекта синхронизации засовывали в функцию!
А верить или нет - это ваш выбор - но надо было проверить сначала, чем утверждать обратное!


 
Игорь Шевченко   (2003-08-05 18:08) [7]

jav (05.08.03 17:24)

Можно верить. Но справочной системе Windows SDK


 
Игорь Шевченко   (2003-08-05 18:09) [8]

Извиняюсь за оффтопик, но нельзя ли узнать, что именно написано
в " (источник - Справочная система Delphi) " про WaitForSingleObject и консольные приложения ?


 
Polevi   (2003-08-06 09:16) [9]

ничего :)


 
jav   (2003-08-07 08:32) [10]

Привожу выдержку из справочной системы Delphi7 Windows SDK...

[cut]
The WaitForInputIdle function waits until the given process is waiting for user input with no input pending, or until the time-out interval has elapsed.

The WaitForInputIdle function only works with GUI applications. If a console application calls the function, it returns immediately, with no wait.
[cut]

Прокоментируйте, пожалуйста... :) (Polevi, Игорь Шевченко)
>HolACost_ Чтобы попробывать надо иметь на это время (его пока нет, а мне легче спросить...) Тем более, что я не "утверждаю", а воспрошаю - почувсвуйте разницу... Был бы я достаточно осведомлен в CreateProcess и функциях иже с ним,, я бы не спрашивал - правда логично?


 
Игорь Шевченко   (2003-08-07 09:40) [11]

WaitForSingleObject
и
WaitForInputIdle

- какие уж тут комментарии :)

Вот пример запуска консольного приложения и ожидания его завершения:
procedure TfMain.DumpFile(const FileName : String);
var
ShellInfo : TShellExecuteInfo;
ParamsString : String;
begin
ParamsString := Format("-em %s %s.aaa", [FileName, FileName]);
ShellInfo.cbSize := SizeOf(ShellInfo);
ShellInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
ShellInfo.Wnd := Handle;
ShellInfo.lpVerb := "open";
ShellInfo.lpFile := "tdump";
ShellInfo.lpParameters := PChar(ParamsString);
ShellInfo.lpDirectory := nil;
ShellInfo.nShow := SW_SHOW;
if NOT ShellExecuteEx(@ShellInfo) then
RaiseLastWin32Error();
if ShellInfo.hProcess <> 0 then
try
WaitForSingleObjectEx(ShellInfo.hProcess, INFINITE, false);
finally
( ShellInfo.hProcess)
WaitForSingleObject
и
WaitForInputIdle

- какие уж тут комментарии :)

Вот пример запуска консольного приложения и ожидания его завершения:
procedure TfMain.DumpFile(const FileName : String);
var
ShellInfo : TShellExecuteInfo;
ParamsString : String;
begin
ParamsString := Format("-em %s %s.aaa", [FileName, FileName]);
ShellInfo.cbSize := SizeOf(ShellInfo);
ShellInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
ShellInfo.Wnd := Handle;
ShellInfo.lpVerb := "open";
ShellInfo.lpFile := "tdump";
ShellInfo.lpParameters := PChar(ParamsString);
ShellInfo.lpDirectory := nil;
ShellInfo.nShow := SW_SHOW;
if NOT ShellExecuteEx(@ShellInfo) then
RaiseLastWin32Error();
if ShellInfo.hProcess <> 0 then
try
WaitForSingleObjectEx(ShellInfo.hProcess, INFINITE, false);
finally
CloseHandle(ShellInfo.hProcess);
end;
end;



 
jav   (2003-08-11 08:30) [12]

Виноват... WaitForSingleObject и
WaitForInputIdle - на первое не натыкался, и почел желаемое за действительное... :)
Благодарствую! (хотя код возврата Вы мне так и не вернули... но это уже не важно!)


 
Игорь Шевченко   (2003-08-11 12:58) [13]

А код возврата, очевидно, возвращается вызовом GetExitCodeProcess



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

Форум: "WinAPI";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.014 c
1-40347
Темчик
2003-10-01 23:04
2003.10.13
StringGrid


3-40314
Vemer
2003-09-21 12:50
2003.10.13
Как убрать вертикальный Scrollbar DBgrid


1-40388
SergSh
2003-10-01 10:29
2003.10.13
Языки :(


3-40250
alex-ran
2003-09-22 11:04
2003.10.13
Выборка из таблиц с разными алиасами


4-40751
k@rt
2003-08-10 16:44
2003.10.13
Как загрузить текст из файла в Edit?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский