Форум: "Основная";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
Внизпереназначение станрартного выхода в поток Найти похожие ветки
← →
oleg_ (2006-05-29 17:48) [0]CreateProcess позволяет через TStartupInfo.hStdOutput переопределить стандартный выход на handler, если подставить handler открытого на запись файла, то весь выход сыпется в него.
А вот как привязать стандартный выход к потоку tstream?
Сапсибо
← →
umbra © (2006-05-29 18:10) [1]если имеется в виду
TFileStream
, то у него есть свойствоHandle
← →
TUser © (2006-05-29 18:12) [2]Просто в стрим не выйдет, т.к. это абстрактный класс, который ничего еще не умеет. Можно в какой-нибудь из наслдников класса THandleStream.
← →
oleg_ (2006-05-29 21:05) [3]сделал через пайпы, стандартный выход сразу льется в поток, но уж очень медленно получилось. Процесс при перенаправлении стандартного выхода в файл для далнейшего считывания его в поток выполняется в 20 раз быстрее чем при направлении выходного потока в пайп! Пайпы в принцыпе медленные или может я накосячил?
← →
Eraser © (2006-05-29 21:22) [4]
> oleg_ (29.05.06 21:05) [3]
> Пайпы в принцыпе медленные или может я накосячил?
второе )
← →
oleg_ (2006-05-29 23:14) [5]как только назначаю пайповый стандартный выход SI.hStdOutput:=cWrite; появляются дикие тормоза на WaitForSingleObject, вродебы все верно...
SA.nLength:=SizeOf(SECURITY_ATTRIBUTES);
SA.bInheritHandle:=True;
SA.lpSecurityDescriptor:=nil;
if not CreatePipe(tRead, cWrite, @SA, 0) then Exit;
ZeroMemory(@SI, SizeOf(TStartupInfo));
SI.cb:=SizeOf(TStartupInfo);
SI.dwFlags:=STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
SI.wShowWindow:=SW_HIDE;
SI.hStdOutput:=cWrite;
if CreateProcess(nil, PChar(CommandLine), nil, nil, True, 0, nil, nil, SI, PI)
then begin
WaitForSingleObject(PI.hProcess, 5000);
ResponseInfo.ContentStream:=THandleStream.Create(tRead);
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c