मैं जो दृष्टिकोण प्रस्तुत करता हूं वह हैकी लगता है लेकिन मुझे यह पता लगाने का एक बेहतर तरीका नहीं मिल रहा है कि मानक आउटपुट को स्क्रीन कंसोल से रीडायरेक्ट किया गया है या नहीं। GetFileType
का उपयोग करने का दृष्टिकोण सभी प्रकार के पुनर्निर्देशन का पता नहीं लगा सकता है क्योंकि कुछ पुनर्निर्देशन FILE_TYPE_CHAR
प्रकार के उपकरणों के लिए हैं।
मानक आउटपुट हैंडल को पारित GetConsoleMode()
पर कॉल करें। यदि GetConsoleMode()
विफल रहता है तो आपका कंसोल रीडायरेक्ट कर दिया गया है।
program RedirectionDetection;
{$APPTYPE CONSOLE}
uses
Windows;
function ConsoleRedirected: Boolean;
var
Mode: DWORD;
begin
Result := not GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), Mode);
end;
begin
if ConsoleRedirected then begin
Writeln('I have been redirected');
end else begin
Writeln('I am a console');
Readln;
end;
end.
स्रोत
2012-01-26 16:59:31
संभव डुप्लिकेट [कैसे करता है, तो Console.In (stdin) को रीडायरेक्ट कर दिया गया है पता लगाने के लिए?] (Http://stackoverflow.com/questions/3453220/how-to-detect-if-console-in- stdin-गया-रीडायरेक्ट किया गया है) –