Autor |
Beitrag |
Toz
Hält's aus hier
Beiträge: 12
|
Verfasst: Di 12.06.12 09:02
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
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 12.06.12 09:22
Hallo und  im Forum!
Du kannst mit AllocConsole selbst eine Konsole anzeigen:
msdn.microsoft.com/e...681944(v=vs.85).aspx
|
|
Toz 
Hält's aus hier
Beiträge: 12
|
Verfasst: Di 12.06.12 11:50
Danke
Ähmm, wie baue ich die Konsole den dann ein, werd aus dem link nicht wirklich schlau^^
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Di 12.06.12 12:01
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. |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Toz 
Hält's aus hier
Beiträge: 12
|
Verfasst: Di 12.06.12 13:01
Danke, 2 Fragen haben ich doch noch
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
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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:
msdn.microsoft.com/e...esktop/ms681944.aspx
(WriteConsole usw., wie der Name schon sagt.)
Aber damit machst du dir das Leben nicht gerade einfacher...
|
|
Toz 
Hält's aus hier
Beiträge: 12
|
Verfasst: 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
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: 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
Einloggen, um Attachments anzusehen!
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Toz 
Hält's aus hier
Beiträge: 12
|
Verfasst: Di 12.06.12 14:33
danke, dann muss ich leider doch mit memo arbeiten  .
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 12.06.12 14:53
|
|