I have a console app that must disable or enable some operations when output is redirected (externally) to a file or pipe (myapp.exe > Foo.bar)
How I can check if my Delphi console app is redirected to a file or pipe?
you can use the GetStdHandle
and GetFileType
functions.
first you retrieve the console output handle using the GetStdHandle function and then you can check the type of the handle with the GetFileType
function.
{$APPTYPE CONSOLE}
{$R *.res}
uses
Windows,
SysUtils;
function ConsoleRedirected: Boolean;
var
FileType : DWORD;
begin
FileType:= GetFileType(GetStdHandle(STD_OUTPUT_HANDLE));
Result := (FileType=FILE_TYPE_PIPE) or (FileType=FILE_TYPE_DISK);
end;
begin
try
if ConsoleRedirected then
Writeln('Hello From File')
else
Writeln('Hello Console');
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With