![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не читает вывод из консоли [D7]
mamedovvms © (2009-08-25 08:45:00)
nit Unit1;что сделано не так??? может кто знает???
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure RunDosInMemo(DosApp:String;AMemo:TMemo) ;
const
ReadBuffer = 512;
var
l:boolean;
Security : TSecurityAttributes;
ReadPipe,WritePipe : THandle;
start : TStartUpInfo;
ProcessInfo : TProcessInformation;
Buffer : Pchar;
BytesRead : DWord;
Apprunning : DWord;
x : Integer;
MyStr : String;
begin
x := 0;
With Security do
begin
Security.nlength := SizeOf(TSecurityAttributes) ;
Security.binherithandle := true;
Security.lpsecuritydescriptor := nil;
end;
if Createpipe (ReadPipe, WritePipe,
@Security, 0) then
begin
Buffer := AllocMem(ReadBuffer + 1) ;
FillChar(Start,Sizeof(Start),#0) ;
start.cb := SizeOf(STARTUPINFO) ;
start.hStdOutput := WritePipe;
start.hStdInput := ReadPipe;
start.dwFlags := STARTF_USESTDHANDLES ;
start.wShowWindow := SW_SHOW;
if CreateProcess(nil,
PChar(DosApp),
@Security,
@Security,
true,
NORMAL_PRIORITY_CLASS,
nil,
nil,
start,
ProcessInfo)
then
begin
CloseHandle(WritePipe) ;
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
BytesRead := 0;
l:=ReadFile(start.hStdInput,Buffer[0],ReadBuffer,BytesRead,nil) ;
ShowMessage(Buffer);
Buffer[BytesRead]:= #0;
OemToAnsi(Buffer,Buffer) ;
AMemo.Lines.Add(MyStr);
AMemo.Refresh;
Application.ProcessMessages;
FreeMem(Buffer) ;
CloseHandle(ProcessInfo.hProcess) ;
CloseHandle(ProcessInfo.hThread) ;
CloseHandle(ReadPipe) ;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RunDosInMemo('c:\cons.exe',memo1) ;
end;
end.
да к стати консольная программа cons.exe просто выводит на экран строку 12345678910, написана на pascal может я что то не понял и нельзя так делать????
X-Fire (2009-11-27 11:22:00) [1]Удалено модератором
Leonid Troyanovsky (2009-08-26 13:21:00) [2]Удалено модератором
mamedovvms (2009-08-26 13:15:00) [3]Удалено модератором
mamedovvms (2009-08-26 13:13:00) [4]Удалено модератором
Сергей М. (2009-08-26 13:11:00) [5]Удалено модератором
Leonid Troyanovsky (2009-08-26 13:08:00) [6]Удалено модератором
mamedovvms (2009-08-26 13:08:00) [7]Удалено модератором
Сергей М. (2009-08-26 13:07:00) [8]Удалено модератором
mamedovvms (2009-08-26 13:06:00) [9]Удалено модератором
Сергей М. (2009-08-26 13:04:00) [10]Удалено модератором
mamedovvms (2009-08-26 12:58:00) [11]Удалено модератором
Leonid Troyanovsky (2009-08-26 12:49:00) [12]Удалено модератором
Leonid Troyanovsky (2009-08-26 12:43:00) [13]Удалено модератором
mamedovvms (2009-08-26 12:43:00) [14]Удалено модератором
Leonid Troyanovsky (2009-08-26 12:38:00) [15]Удалено модератором
mamedovvms (2009-08-26 12:36:00) [16]Удалено модератором
Сергей М. (2009-08-26 12:31:00) [17]
> не надо лишних комментариев
Не надо брать на слабо.
Так что мешает ?
mamedovvms (2009-08-26 12:26:00) [18]не надо лишних комментариев, вы тоже не асы во всем
Сергей М. (2009-08-26 12:17:00) [19]
> что так трудно ответить
Что, так трудно заглянуть в справку к ф-ции Format() ?
А заодно и к WaitForSingleObject ?
mamedovvms (2009-08-26 12:08:00) [20]лучше не знать к чему привыкли мои руки, что так трудно ответить или просто или вы просто не падете так низко что бы нормально ответить что и где как создать ???? неужели так сложно, или просто ваш профессионализм не позволяет???