PDA

Просмотр полной версии : Работа с внешними приложениями



Anonymous
09.04.2004, 09:14
У меня следующая ситуация: Запускаю из дельфевонго прилодение внешнюю win32 консольную программу, для подсчета контрольной суммы (КС) файла (fsum.exe). Вопрос: Как передать обратно в фельфевое приложение значени КС полученное в результате выполнения fsum?

Eugie
09.04.2004, 17:41
Наверное, самый незатейливый способ - запустить консольную программу из-под командного процессора и перенаправить вывод в файл. Что-то типа:



{
pCmdLine - командная строка, запускающая данную конс.программу (включая параметры, если есть)
pOutputFile - файл, куда будет перенапрвлен вывод
}
procedure RunConsoleApp(const pCmdLine, pOutputFile: String);
var startup_info: TStartupInfo;
process_info: TProcessInformation;
cmd_line: String;
begin
ZeroMemory(@startup_info, SizeOf(startup_info));
startup_info.cb := SizeOf(startup_info);
cmd_line := Format('cmd.exe /c /a %s > %s', [pCmdLine, pOutputFile]);
Win32Check(CreateProcess(nil, PChar(cmd_line), nil, nil, False, NORMAL_PRIORITY_CLASS,
nil, nil, startup_info, process_info));

WaitForSingleObject(process_info.hProcess, INFINITE);

CloseHandle(process_info.hProcess);
CloseHandle(process_info.hThread);
end;


Дальше, понятно, читаем из файла то, что нужно.