Текущий архив: 2009.11.22;
Скачать: CL | DM;
Вниз
Как в режиме раельного времени работать с вводом/выводом консоли? Найти похожие ветки
← →
relaxive (2009-10-11 15:57) [0]Т.е. открыть консоль, получать данные при выводе информации и посылать данные в консоль при этом не закрывая ее. Например:
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.
C:\Documents and Settings\Admin>
Произошел вывод - выводим это в своем приложении
Вводим:cd ..
И так далее.
← →
relaxive (2009-10-11 16:48) [1]Вообщем понял что через пайпы, дайте работающий дод, этот не работает:
program Project1;
{$APPTYPE CONSOLE}
uses Windows,
SysUtils;
var SA:TSecurityAttributes;
SI:TStartupInfo;
PI:TProcessInformation;
fexit,cstdin,wstdin,rstdout,cstdout:THandle;
WasOK:Boolean;
ReadBuff,WriteBuff:array[0..255]of Char;
BytesCount:Cardinal;
begin
with SA do
begin
nLength:=SizeOf(SA);
bInheritHandle:=True;
lpSecurityDescriptor:=nil;
end;
if not CreatePipe(cstdin,wstdin,@SA,0) then exit;
if not CreatePipe(rstdout,cstdout,@SA,0) then exit;
GetStartupInfo(SI);
try
with SI do
begin
dwFlags:=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
wShowWindow:=SW_HIDE;
hStdOutput:=cstdout;
hStdError:=cstdout;
hStdInput:=cstdin;
end;
WasOK:=CreateProcess(nil,PChar("cmd"),nil,nil,true,CREATE_NEW_CONSOLE{0},nil,nil ,SI,PI);
if not WasOK then exit
else
try
while((GetExitCodeProcess(PI.hProcess,fexit))and(fexit=STILL_ACTIVE)and(WriteBuf f<>"exit"))do
begin
readln(WriteBuff);
WriteFile(wstdin,WriteBuff,1,BytesCount,nil);
repeat
WasOK:=ReadFile(rstdout,ReadBuff,255,BytesCount,nil);
if BytesCount > 0 then
begin
write(ReadBuff);
end;
until not WasOK or(BytesCount<255);
sleep(1);
end;
WaitForSingleObject(PI.hProcess,INFINITE);
finally
CloseHandle(PI.hThread);
CloseHandle(PI.hProcess);
end;
finally
CloseHandle(fexit);
CloseHandle(cstdin);
CloseHandle(wstdin);
CloseHandle(rstdout);
CloseHandle(cstdout);
end;
end.
Проблема с циклом
← →
Германн © (2009-10-12 00:42) [2]
> дайте работающий дод
У меня нет такого дода. :(
← →
Eraser © (2009-10-12 01:54) [3]> [0] relaxive (11.10.09 15:57)
ищи в гугле, примеров полно. в JEDI даже спец. компонент есть.
Страницы: 1 вся ветка
Текущий архив: 2009.11.22;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.014 c