لماذا لا تحتوي إعادة التوجيه على رموز ANSI الضرورية؟
-
21-09-2019 - |
سؤال
حسنًا ، إليك تطبيق وحدة تحكم بسيط قمت باختباره RedirectStandardOutput
التابع Process.StartInfo
.
foreach (c In [Enum].GetValues(GetType(ConsoleColor))
{
Console.ForegroundColor = c
Console.WriteLine("Test")
}
وتحت نتيجة التطبيق.
لذلك يمكننا أن نرى الألوان تظهر بشكل جميل على وحدة التحكم.
ومع ذلك ، عندما أقرأ StandardOutput.BaseStream
لا توجد معلومات ملونة ، ولا رموز ANSI ، لا شيء.
كيف يمكنني التقاط معلومات اللون على الدفق الذي تم إعادة توجيهه؟
المحلول
الجواب المختصر هو أن التدفقات كما قدمت لك .NET Console
الفئة تعتمد فقط على الأحرف وإرجاع البيانات النصية فقط.
للحصول على معلومات اللون الموسعة ، سيكون من الضروري P/استدعاء واجهة برمجة تطبيقات Win32 ReadConsoleOutput. سيعود هذا ، من بين أشياء أخرى ، مجموعة من color_info الهياكل التي تحتوي على سمات اللون لكل حرف. قد ترغب في إلقاء نظرة على readconsoleOutput pinvoke.net صفحة للبدء.
لا تنتمي إلى StackOverflow