السلام عليكم ورحمة الله
سنعرف في هذه المقالة البسيطة كيف يمكننا ان نقوم بتغيير الألوان الإعتيادية (الأبيض والأسود) في نافذة الConsole لنجعلها بالألوان التي نرغبها
في البداية نقوم بفتح مشروع Console جديد .
ثم نضيف إليه Module جديد ولنسمه ConsoleColoring (بالطبع هذا الموديول سيكون الموديول الثاني لأن هناك موديول ستنشئه بيئة دوت نيت تلقائياً وسيكون اسمه Module1)
ماذا سنكتب داخل موديول ConsoleColoring ؟
سنحتاج لاستخدام دالتين Api وهما GetStdHandle ، SetConsoleTextAttribute وهما موجودتان في مكتبة kernel32.dll وكيفية إستدعائهما تكون كالآتي :
Private Declare Auto Function GetStdHandle Lib "kernel32.dll" (ByVal nStdHandle As Integer) As IntPtr Private Declare Auto Function SetConsoleTextAttribute Lib "kernel32" (ByVal hConsoleOutput As IntPtr, ByVal wAttributes As Integer) As Long
وأيضاً سنحتاج لتعريف ثابت (سيستخدم كمعامل لنمرره لدالة GetStdHandle) كالتالي :
Private Const STD_OUTPUT_HANDLE As Integer = &HFFFFFFF5
بعد ذلك سنحتاج لتعريف Enum جديد (لا أعرف الترجمة العربية لل Enum :unsure: ) وسيكون باسم ForeColors ووظيفته تخزين بعض الألوان (لون الخط) التي سيمررها المستخدم عند إستدعاء إجراءات التنفيذ ، وسنعرف Enum آخر وسيكون باسم BackColors وسيخزن ألوان الخلفية :
Public Enum ForeColors Blue = &H1 Green = &H2 Red = &H4 White = &HF End Enum Public Enum BackColors Blue = &H10 Green = &H20 Red = &H40 End Enum
ملحوظة : يمكنك تعريف ألوان أخرى غذا أردت ذلك .
ملحوظة أخرى : لاحظ انه ربما تشابهت أسماء الألوان لكن القيم تختلف مابين النص والخلفية .
الآن بقي (في هذا الموديول) أن نكتب الإجراءات المستخدمة في تنفيذ عملية التلوين :
Public Sub SetConsoleColors(ByVal ForeColor As ForeColors, ByVal Backcolor As BackColors) Dim hConsole As IntPtr = GetStdHandle(STD_OUTPUT_HANDLE) Backcolor = IIf(Backcolor = 0, 256, Backcolor * 16) SetConsoleTextAttribute(hConsole, ForeColor Or Backcolor) End Sub Public Sub SetConsoleColors(ByVal ForeColor As ForeColors) Dim hConsole As IntPtr = GetStdHandle(STD_OUTPUT_HANDLE) SetConsoleTextAttribute(hConsole, ForeColor) End Sub
نلاحظ أن الإجرائين لهما نفس الاسم لكن ... نعم .. المعاملات(Parameters) مختلفة فالأولى لتمرير لون النص والخلفية والثانية لتمرير لون النص فقط .
الآن جاء دور الموديول الرئيسي المسمى-افتراضياً- Module1 ..
وسيحتوي على التطبيق لما كتبنا الآن ، اذهب لإجراء (Sub) Main واكتب داخله الكود التالي :
ConsoleTools.SetConsoleColors(ConsoleTools.ForeColors.White, ConsoleTools.BackColors.Green)
Console.WriteLine("Elnahrawi@Hotmail.com")
Console.WriteLine()
ConsoleTools.SetConsoleColors(ConsoleTools.ForeColors.Blue)
Console.WriteLine("Elnahrawi@Hotmail.com")
Console.Read()هذا كل شيء ، وفقنا الله وإياكم لما يحبه ويرضاه .