Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 28. Jun 2023, 12:53
Jetzt läuft ja hinter der cmd.exe bzw. der neuen Terminal-App ein Console-Host, je nach Ziel (Windows-Console, PowerShell, Linux-Bash usw)

Ich hatte mal versucht rauszufinden, wie das intern abläuft, aber in der Hilfe noch nicht wirklich was gefunden, bzw. im QuellCode des Terminals, da sieht doch niemand durch.

Sonst hätte man sich da auch "einfach" was mit Delphi bauen können.

https://github.com/microsoft/terminal
https://learn.microsoft.com/de-de/windows/terminal/
https://apps.microsoft.com/store/det...l/9N0DX20HK701

https://www.golem.de/news/windows-11...08-167912.html
https://www.computerbild.de/artikel/...-30464147.html
Bis eben hatte ich das Windows-Terminal noch gar nicht installiert, also wurde bei mir automatisch der Windows-Konsolenhost verwendet. Unter dem Windows-Terminal läuft mein Code nicht sauber. Sobald das Windows-Terminal installiert ist, kann man unter "Datenschutz und Sicherheit > Für Entwickler > Terminal" einstellen, ob "Windows-Konsolenhost" oder "Windows-Terminal" verwendet werden soll. Wählt man hier den Windows-Konsolenhost läuft mein Code wieder sauber. Jetzt wäre es natürlich interessant zu wissen, ob man Windows irgendwie aus der App heraus vorgeben kann ob der Konsolenhost oder das Terminal verwendet werden soll, unabhängig von der oben genannten Windows-Einstellung. Da muss ich erst einmal recherchieren, oder hat von Euch jemand eine Idee.

Ferner wäre es natürlich interessant zu wissen, ob der Code auch kompatibel zum Windows-Terminal gemacht werden kann. Ein kurzer Test war da eigentlich sehr vielversprechend. Einige der Grundfunktionen die ich nutze scheinen direkt vom Terminal unterstüzt zu werden. Aber für eine ordentliche Bewertung muss ich mich wohl erst mal wieder in der MSDN und/oder der Dokumentation vom Terminal eingraben...
Kannst Du mal mit diesem Schnippsel prüfen was unter einem Terminal rauskommt?
Delphi-Quellcode:
function IsConsole: Boolean;
var
  Stdout: THandle;
begin
  Stdout := GetStdHandle(Std_Output_Handle);
  Win32Check(Stdout <> Invalid_Handle_Value);
  Result := Stdout <> 0;
end;
Laut hier -> https://learn.microsoft.com/en-us/wi...e/getstdhandle sollte es nur für eine Konsole funktionieren.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat