Показать сообщение отдельно

  #11  
Старый 20.02.2007, 18:43
X-lord
Banned
Регистрация: 16.12.2006
Сообщений: 27
С нами: 10211153

Репутация: -17
По умолчанию

чё неужели неясно чё хотит Ky3bMu4????
Код:
 function GetDosOutput(const CLine:string;Vr:string):string;
var
SA: TSecurityAttributes;
SI: TStartupInfo;
PI: TProcessInformation;
StdOutPipeRead, StdOutPipeWrite: THandle;
WasOK: Boolean;
Buffer: array[0..255] of Char;
BytesRead: Cardinal;
Line,Com:string;
begin
with SA do
begin
nLength := SizeOf(SA);
bInheritHandle := True;
lpSecurityDescriptor := nil;
end;
CreatePipe(StdOutPipeRead,StdOutPipeWrite,@SA,0);
Com:=Vr+CLine;
try
with SI do
begin
FillChar(SI, SizeOf(SI), 0);
cb := SizeOf(SI);
dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
wShowWindow := SW_HIDE;
hStdInput := GetStdHandle(STD_INPUT_HANDLE); // стандартный ввод не перенаправляем 
hStdOutput := StdOutPipeWrite; 
hStdError := StdOutPipeWrite; 
end;
WasOK := CreateProcess(nil, PChar(Com), nil, nil, True, 0, nil, nil, SI, PI);
CloseHandle(StdOutPipeWrite);
if not WasOK then
result:='Could not execute command line!'
else
try
Line := '';
repeat
WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil);
if BytesRead > 0 then
begin
Buffer[BytesRead] := #0;
Line := Line + Buffer;
end;
until not WasOK or (BytesRead = 0);
WaitForSingleObject(PI.hProcess, INFINITE);
finally
CloseHandle(PI.hThread);
CloseHandle(PI.hProcess);
end; 
finally 
result:=Line;
CloseHandle(StdOutPipeRead);
end;
end;

Последний раз редактировалось BlackLogic; 20.02.2007 в 20:58..
 
Ответить с цитированием