Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: Konsolenfenster im GUI-Mode unterdrücken

  Alt 10. Nov 2007, 09:42
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.
$2B or not $2B
  Mit Zitat antworten Zitat