Содержание материала

Причем CreateChildProcess - это не API - это моя функция! Вот она:

Code:

function TChildProc.CreateChildProcess(ExeName, CommadLine: string; StdIn,

StdOut: THandle): Boolean;

var

piProcInfo: TProcessInformation;

siStartInfo: TStartupInfo;

begin

// Set up members of STARTUPINFO structure.

ZeroMemory(@siStartInfo, SizeOf(TStartupInfo));

siStartInfo.cb := SizeOf(TStartupInfo);

siStartInfo.hStdInput := StdIn;

siStartInfo.hStdOutput := StdOut;

siStartInfo.dwFlags := STARTF_USESTDHANDLES;

// Create the child process.

Result := CreateProcess(nil,

   PChar(ExeName + ' ' + CommadLine), // command line

   nil, // process security attributes

   nil, // primary thread security attributes

   TRUE, // handles are inherited

   0, // creation flags

   nil, // use parent's environment

   nil, // use parent's current directory

   siStartInfo, // STARTUPINFO pointer

   piProcInfo); // receives PROCESS_INFORMATION

end;

 

Здесь важное значение имеют вот эти строчки:

Code:

siStartInfo.hStdInput := StdIn;

siStartInfo.hStdOutput := StdOut;

siStartInfo.dwFlags := STARTF_USESTDHANDLES;

 

Первые две - понятно. А третья - читайте Хелп! Там все написано...

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить