![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
переназначение станрартного выхода в поток [D6, Win2k, WinXP]
oleg_ © (2006-05-29 17:48:00)CreateProcess позволяет через TStartupInfo.hStdOutput переопределить стандартный выход на handler, если подставить handler открытого на запись файла, то весь выход сыпется в него.
А вот как привязать стандартный выход к потоку tstream?
Сапсибо
oleg_ (2006-05-29 23:14:00) [1]как только назначаю пайповый стандартный выход 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);
Eraser (2006-05-29 21:22:00) [2]
> oleg_ (29.05.06 21:05) [3]
> Пайпы в принцыпе медленные или может я накосячил?
второе )
oleg_ (2006-05-29 21:05:00) [3]сделал через пайпы, стандартный выход сразу льется в поток, но уж очень медленно получилось. Процесс при перенаправлении стандартного выхода в файл для далнейшего считывания его в поток выполняется в 20 раз быстрее чем при направлении выходного потока в пайп! Пайпы в принцыпе медленные или может я накосячил?
TUser (2006-05-29 18:12:00) [4]Просто в стрим не выйдет, т.к. это абстрактный класс, который ничего еще не умеет. Можно в какой-нибудь из наслдников класса THandleStream.
umbra (2006-05-29 18:10:00) [5]если имеется в виду
TFileStream, то у него есть свойствоHandle