Главная страница
    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.47 MB
Время: 0.01 c
3-40245
Vladus
2003-09-23 16:53
2003.10.13
Дельфи + Access + линкование таблиц ?


1-40368
Pavels
2003-10-01 13:51
2003.10.13
поиск в XMLDocumnet


14-40631
Johnmen
2003-09-24 14:26
2003.10.13
А любят ли программеры рыбу ?


3-40277
Виктор
2003-09-20 23:53
2003.10.13
ADOQuery и DateTime


1-40371
dataMaster
2003-10-03 10:19
2003.10.13
Как в ListView показать нужный Item первым





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