Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Konsolenfenster in VCL-Anwendung
Toz - Di 12.06.12 09:02
Titel: Konsolenfenster in VCL-Anwendung
Hallo,
ich bin dabei mir ein Programm zu schreiben um mit einer grafischen Oberfläsche GIT zu nutzen.
Ich möchte aber trotzdem das in dem VCL ein "echtest" Konsolenfenster ist in dem ich auch direkt die Befehele eingeben kann (also nicht eine schwarze edit box die alles in die konsole schreibt bzw. aus ihr heraus liest).
Jetzt ist aber genau das mein Problem ;)
Hat einer von euch eine Idee oder Tipp wie ich ein Konsolenfenster (cmd) innerhalb eines VCL Forms anzeigen kann?
Im Vorraus schon mal danke :)
Grüße
Toz
Toz - Di 12.06.12 11:50
Danke :)
Ähmm, wie baue ich die Konsole den dann ein, werd aus dem link nicht wirklich schlau^^
bummi - Di 12.06.12 12:01
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| unit Unit5;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm5 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private FConsoleAllocated:Boolean; procedure WriteConsole(const s: String); public end;
var Form5: TForm5;
implementation
{$R *.dfm}
Procedure TForm5.WriteConsole(Const s:String); begin if FConsoleAllocated then Writeln(s);
end;
procedure TForm5.Button1Click(Sender: TObject); begin WriteConsole(FormatDateTime('hh:nn:ss.zzz',now)); end;
procedure TForm5.FormCreate(Sender: TObject); begin FConsoleAllocated := Windows.AllocConsole; end;
procedure TForm5.FormDestroy(Sender: TObject); begin if FConsoleAllocated then FreeConsole;
end;
end. |
Toz - Di 12.06.12 13:01
Danke, 2 Fragen haben ich doch noch :oops:
zum einen, ist es auch möglich die konsole im Form zu haben, also wie z.B. ein Panel.
und, ich habe mir die API angeguckt aber finde dort nicht die möglichkeit befehle in die konsole zu packen, wie z.B. 'dir', steh ich da aufm schlauch oder geht das nicht?
jaenicke - Di 12.06.12 13:13
Was willst du denn nun?
- Eine eingebundene Konsole inklusive Kommunikation: Dann macht es wenig Sinn eine direkte Konsole aufzumachen, sondern dann kann die im Hintergrund geöffnet und z.B. in ein Memo gepackt werden
- Eine einzelne Konsole: Dann macht AllocConsole Sinn
Theoretisch findest du in der Doku aber auch Funktionen um in eine Konsole zu schreiben und daraus zu lesen:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms681944.aspx
(WriteConsole usw., wie der Name schon sagt.)
Aber damit machst du dir das Leben nicht gerade einfacher...
Toz - Di 12.06.12 13:26
Eine eingebundene Konsole inklusive Kommunikation ;) die Idee mit dem Memo hatte ich auch schon, aber ich finde das unsauber, mir persönlich ist eine richtige Konsole innerhalb der Form lieber (Geschmackssache halt ;D).
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm2.Button1Click(Sender: TObject); begin WriteConsole(FormatDateTime('hh:nn:ss.zzz',now)); WriteConsole('dir'); end; |
Habe ich versucht, aber er schreibt mir nur 'dir' rein, logisch, aber ich will auch das er den befehl ausführt, das tut er leider nicht.... :(
bummi - Di 12.06.12 14:19
Eine Konsole ist ja kein CMD oder Command, sondern eine Ein/Ausgabemedium
Wenn Du CMD fernsteuern willst kannst Du Dir den Anhang mal anschauen
Toz - Di 12.06.12 14:33
danke, dann muss ich leider doch mit memo arbeiten :( .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!