لماذا لا تحتوي إعادة التوجيه على رموز ANSI الضرورية؟

StackOverflow https://stackoverflow.com/questions/1963954

سؤال

حسنًا ، إليك تطبيق وحدة تحكم بسيط قمت باختباره RedirectStandardOutput التابع Process.StartInfo.

    foreach (c In [Enum].GetValues(GetType(ConsoleColor))
    {
        Console.ForegroundColor = c
        Console.WriteLine("Test")
    }

وتحت نتيجة التطبيق.

Result of the Console Application.

لذلك يمكننا أن نرى الألوان تظهر بشكل جميل على وحدة التحكم.

ومع ذلك ، عندما أقرأ StandardOutput.BaseStream لا توجد معلومات ملونة ، ولا رموز ANSI ، لا شيء.

كيف يمكنني التقاط معلومات اللون على الدفق الذي تم إعادة توجيهه؟

هل كانت مفيدة؟

المحلول

الجواب المختصر هو أن التدفقات كما قدمت لك .NET Console الفئة تعتمد فقط على الأحرف وإرجاع البيانات النصية فقط.

للحصول على معلومات اللون الموسعة ، سيكون من الضروري P/استدعاء واجهة برمجة تطبيقات Win32 ReadConsoleOutput. سيعود هذا ، من بين أشياء أخرى ، مجموعة من color_info الهياكل التي تحتوي على سمات اللون لكل حرف. قد ترغب في إلقاء نظرة على readconsoleOutput pinvoke.net صفحة للبدء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top