![]() |
Konsole in Memo anzeigen.
Ich weißt nicht ob meine Frage hier richtig ist. Ich stell sie jetzt einfach mal.
In eine Memobox in meinem Programm soll ein Konsolenprogramm (z.B. die CMD) ausgegeben werden. Das funktioniert auch sehr gut, mit diesem Snippet:
Delphi-Quellcode:
Jetzt möchte ich aber, dass diese Konsole im Hintergrund geöffnet bleibt und Befehle annimmt (entweder durch eine Textbox oder, noch besser, direkt aus der Memo). Der Inhalt soll aber nachwievor in meiner Memo ausgegeben werden.
procedure TForm1.Button1Click(Sender: TObject) ;
procedure RunDosInMemo(DosApp:String;AMemo:TMemo) ; const ReadBuffer = 2400; var Security : TSecurityAttributes; ReadPipe,WritePipe : THandle; start : TStartUpInfo; ProcessInfo : TProcessInformation; Buffer : Pchar; BytesRead : DWord; Apprunning : DWord; begin With Security do begin nlength := SizeOf(TSecurityAttributes) ; binherithandle := true; lpsecuritydescriptor := nil; end; if Createpipe (ReadPipe, WritePipe, @Security, 0) then begin Buffer := AllocMem(ReadBuffer + 1) ; FillChar(Start,Sizeof(Start),#0) ; start.cb := SizeOf(start) ; start.hStdOutput := WritePipe; start.hStdInput := ReadPipe; start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW; start.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(DosApp), @Security, @Security, true, NORMAL_PRIORITY_CLASS, nil, nil, start, ProcessInfo) then begin repeat Apprunning := WaitForSingleObject (ProcessInfo.hProcess,100) ; Application.ProcessMessages; until (Apprunning <> WAIT_TIMEOUT) ; Repeat BytesRead := 0; ReadFile(ReadPipe,Buffer[0], ReadBuffer,BytesRead,nil) ; Buffer[BytesRead]:= #0; OemToAnsi(Buffer,Buffer) ; AMemo.Text := AMemo.text + String(Buffer) ; until (BytesRead < ReadBuffer) ; end; FreeMem(Buffer) ; CloseHandle(ProcessInfo.hProcess) ; CloseHandle(ProcessInfo.hThread) ; CloseHandle(ReadPipe) ; CloseHandle(WritePipe) ; end; end; begin {button 1 code} RunDosInMemo('cmd.exe',Memo1) ; end; Ist das möglich? (Ich nehms mal stark an) Wenn ja, wie? Ich bin für alle Hilfe dankbar. EDIT: Es würde auch schon reichen zu wissen wie man die Konsole offen hält. Dann könnte ich die Befehle ja als Keystrokes übergeben. |
Re: Konsole in Memo anzeigen.
|
Re: Konsole in Memo anzeigen.
Ich habs mir nur kurz angeschaut, ich meine aber, dass es im Grunde das Selbe ist, was ich oben auch habe und somit keine Lösung meines Problems.
|
Re: Konsole in Memo anzeigen.
Wahrscheinlich eher
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz