![]() |
Ausgabe in DOS-Box
Hallo,
Mal ne kleine Frage. Ich hab ein Programm geschrieben. Wenn dieses Programm jedoch mit nem Parameter gestartet wird(-h), dann soll die Benutzung und die Parameter erklärt werden. Und zwar nur, wenn das Programm von ner DOS-Box aus aufgerufen wurde. Das Programm soll also ganz normal als Windows-Programm fungieren aber unter der bestimmten Bedingung soll es so wie eine consolen-Anwendung arbeiten. WriteLn geht ja irgendwie mit nem GUI-Programm nicht. Und wenn ich {$APPTYPE CONSOLE} einbaue, öffnet sich zusätzlich zum Fenster ne DOS-Box, wenn ich das Programm ganz normal ohne Parameter starte. Wie kann ich erreichen, dass ich WriteLn auch in nem GUI-Programm benutzen kann? Oder wie kann ich ne Entscheidung machen und dann {$APPTYPE CONSOLE} setzen oder nicht? Danke im Voraus, sabelrider |
Re: Ausgabe in DOS-Box
Das IMHO nicht möglich, denn nur mit APPTYPE CONSOLE bleibt dein Programm in der schon geöffneten Konsole. Wenn du im nachhinein AllocConsole() aufrufst, bekommst du eine neue Konsole.
Was vielleicht funktionieren könnte ist folgendes:
Delphi-Quellcode:
Das führt, wenn es überhaupt funktioniert, zu flickern, da kurzfristig eine Konsole geöffnet wird.
{$APPTYPE CONSOLE}
... if ParamStr(1) = '-H' then begin Halt(0); end else FreeConsole; // Konsole schließen ... |
Re: Ausgabe in DOS-Box
Es gibt bestimmt aber auch ne andere Lösung:
Denn: Wenn man sich den Registry-Editor von Windows ansieht, wird man feststellen, dass dieses Programm auch solch ein "Doppelleben" führt. Wird dieses Programm aus dem "Ausführen"-Dialog von Windows gestartet, so öffnet sich das standardmäßige Fenster mit dem Inhalt der Registry geöffnet. Sobald man das Programm allerdings zum Beispiel aus der Konsole mit dem Parameter "/c blub.reg" startet und so eine neue Registry aus der Datei blub.reg erstellt, so läuft diese Aktion in der Konsole ab, ohne dass ein Fenster geöffnet wird. Das Gleiche passiert mit dem Parameter "/e". In einem Artikel der PC-WELT wird beschrieben, dass man den DOS-Teil von Regedit per ![]() Hoffe euch geholfen zu haben vbinsider |
Re: Ausgabe in DOS-Box
Hiho,
hört sich interessant an! Hast du den Link zu dem Artikel zufällig zur Hand? Gruß, sabelrider |
Re: Ausgabe in DOS-Box
Moin Sabelrider,
meinst Du das so:
Delphi-Quellcode:
Erstellt mit "Neues Anwendung", dann Projekt\Quelltext anzeigen. Anschliessend den IF Block eintragen, und die Unit Windows mit aufnehmen.
program Project1;
uses Forms, Windows, Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} begin Application.Initialize; if paramcount > 0 then begin Application.ShowMainform := false; AllocConsole; WriteLn('HALLO'); ReadLn; FreeConsole; exit; end; Application.CreateForm(TForm1, Form1); Application.Run; end. Zum Testen dann unter Start\Parameter einen Parameter eintragen. |
Re: Ausgabe in DOS-Box
Hallo Christian,
Danke! Das ist genau das, was ich gesucht habe. Eigentlich hätte ich auch selber draufkommen können :D Aber ShowMainform war mir unbekannt :) Wieder was dazugelernt :D Danke, sabelrider |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 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