hab jetzt mal einiges von da oben ausprobiert...
AllocConsole und AttachConsole erzeugen beide eine neue Console (unter WinXP)
sieht vorallem witzig aus wenn das Programm von einer Console (oder Batchfile) aus gestartet wurde und nun zwei davon da sind.
mit $APPTYPE CONSOLE hatte ich es schon versucht, aber da bleib ich nun bei
GUI (das Programm läuft ja vorwiegend damit)
OK, das Programm arbeitet zwar
NonVCL und da werden die Fenster genauso mit Console, als auch ohne (
GUI) angezeigt, aber da stört mich schon dieses Konsolenfenster, wenn es nicht benötigt wird.
ich wollte einfach nur eine Statusmeldung in der Konsole ausgebn (wenn diese exisiert) ...
gibt es da nun inzwischen irgendwo eine Lösung dafür?
Input wird nicht benötigt, ich würde nur genr irgendwie ein/zwei Zeilen dareinschreiben.
MfG <(^_^<)
[add]
aaaalso, FreeConsole schließt zwar nur die vom Programm erzeugte
Konsoleund Eine z.B. von 'ner Batch-Datei bleibt geöffnet,
aber nach dem Aufruf st dennoch (war ja irgendwie klar) die Verbindung
zur "Batch-Datei"-Konsole futsch.
Delphi-Quellcode:
{$APPTYPE CONSOLE}
Sleep(2000);
WriteLn('
123');
// << in "alter" Konsole
Sleep(2000);
if FreeConsole
then A := '
f';
Sleep(2000);
{$i-} WriteLn('
456');
{$i+} // << dieses wird natürlich nie ausgegeben
Sleep(2000);
if AllocConsole
then A := A + '
a';
Sleep(2000);
{$i-} WriteLn('
789');
{$i+} // << Ausgabe in neuer Konsole (AllocConsole)
Sleep(2000);
// auch geschützt, da beim der mit AllocConsole
Exception(998, [A]);
// erzeugten Konsole zwar der Text geschrieben wird,
// aber dennoch eine Exception auftritt
[add2]
wenn jetzt dieses "kurzzeitige" Konsolenfenster und die Beschränkung auf WinXP/Vista nich wäre,
dann könnte man es wohl so lassen
Delphi-Quellcode:
{$APPTYPE CONSOLE}
FreeConsole;
isConsole := AttachConsole(ATTACH_PARENT_PROCESS);
if isConsole then WriteLn('irgendwas');
dieses hat mir auch gleich mal eine Lösug gegeben, wie ich automatisch rausbekommen kann ob
GUI oder Konsole.