![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перенапрвление потоков
Lelik © (2004-12-23 07:52:00)Всем привет есть такой кусок начала функции:
function TMainForm.Raschet(infile:string):boolean ;
var
f:TextFile;
j:integer;
si:_STARTUPINFOA;
pi:_PROCESS_INFORMATION;
info : TOSVersionInfo;
ClassName : string;
Title : string;
begin
AssignFile(f,'in');
Rewrite(f);
WriteLn(f,trim(infile)+'.dat');
WriteLn(f,'n');WriteLn(f,'n');WriteLn(f,'1');WriteLn(f,'1');WriteLn(f,'2');WriteLn(f,'3');WriteLn(f,'4');WriteLn(f,'5');
CloseFile(f);
GetDir(0,s);
if not CreateProcess(nil,'trakt < in > out',nil,nil,false,0,nil,nil,si,pi) then
begin
Exception.Create('Ошибка при запуске');
end else begin
Трабла: как сделать так, чтобы trakt (досовская прога) смог просматривать файл in как если бы мы сделали это в командной строке например far’a?
Dolt (2004-12-23 09:18:00) [1]1) Создать пайп
with SecAttr do
begin
nlength := SizeOf(TSecurityAttributes);
binherithandle := true;
lpsecuritydescriptor := nil;
end;
if Createpipe (hReadPipe, hWritePipe, @SecAttr, 0) then
.....
2) Заполнить TStartUpInfo
FillChar(StartupInfo, Sizeof(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.hStdOutput := hWritePipe;
StartupInfo.hStdInput := hReadPipe;
StartupInfo.dwFlags := STARTF_USESTDHANDLES +
STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_HIDE;
3) Запустить процесс