HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Konzol alkalmazások extra beállítási lehetőségei


Konzol alkalmazások 1. rész

Példaprogram letöltése

6005 bájt

Amikor egy konzol alkalmazást készítünk, akkor általában a Console osztályt használjuk fel különféle feladataink megvalósításához. Ez az osztály azonban nem biztosít számos olyan funkciót, melyet egy ilyen parancssori alkalmazásban ki lehet használni.
Sorozatunkban azokat a lehetőségeket kutatjuk, melyek használhatók parancssori alkalmazások fejlesztésekor, de a Console osztályban nincsenek benne.
Ilyen lehetőség például az ablakba írt szöveg és annak hátterének a színe, melyeket tetszés szerint megválaszthatunk programból.

Ezen extra lehetőségek eléréséhez a Kernel32.dll-ben lévő néhány e témában használható függvényének elérésére lesz szükségünk. Ilyen a GetStdHandle függvény, mellyel lekérdezhetjük a konzol ablak azonosítóját, amit felhasználva majd elérhetjük az extra szolgáltatásokat.
    [DllImport("kernel32.dll", EntryPoint="GetStdHandle", SetLastError=true, CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
    private static extern int GetStdHandle(int nStdHandle);
Másik függvény, melyre szükségünk lesz mostani példánknál a SetConsoleTextAttribute lesz. Ezt használjuk majd a konzol ablak aktuális színeinek beállítására.
    [DllImport("kernel32.dll", EntryPoint="SetConsoleTextAttribute", SetLastError=true, CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
    private static extern int SetConsoleTextAttribute(int hConsoleOutput, int wAttributes);
Készítünk egy Win32 osztályt, melyhez statikus függvényeket hozunk létre, hogy majd egyszerűen használhassuk a benne lévő függvényeket. A konstruktorban kérdezzük le a konzol ablak azonosítóját a GetStdHandle függvénnyel. Paraméterként a STD_OUTPUT_HANDLE konstanst adjuk meg, így a kimeneti standard ablak azonosítót kapjuk meg, mellyel az írás és az ehhez tartozó műveletek végezhetők el.
    static Win32()
    {
      hStdConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    }
A SetTextColor függvényünkkel tudjuk majd beállítani az aktuális írás és háttér színt. Itt azonban nem használhatunk RGB színeket, hanem csak 16 előre meghatározott szín közül választhatunk. Ezekhez létrehozunk két felsorolt típust, hogy egyszerűbb legyen a megadás.
A választott szín beállításához a SetConsoleTextAttribute függvényt kell meghívnunk, melyben első paraméterként a már lekérdezett ablak azonosítót adjuk át, míg másodikként a két szín érték összegét. Mivel négy bites színeket használunk, így a byte egyik négy bitjébe az írás, másik négy bitjébe a háttér színének kódja kerülhet.
    public static void SetTextColor(ColorForeground foreground, ColorBackground background)
    {
      SetConsoleTextAttribute(hStdConsoleOutput, (int)foreground + (int)background);
    }
Ezek után már egyszerű a felhasználás: a konzolra történő írás előtt a SetTextColor függvény hívással megadhatjuk, hogy milyen színű legyen a feliratunk, melyet már a Console osztály Writexxx függvényeivel írhatunk ki.
    static void Main(string[] args)
    {
      Win32.SetTextColor(Win32.ColorForeground.Yellow, Win32.ColorBackground.Maroon);
      Console.WriteLine("Software Online");
      Win32.SetTextColor(Win32.ColorForeground.Blue, Win32.ColorBackground.White);
      Console.WriteLine("http://www.SoftwareOnline.hu");
      Console.Read();
    }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 534. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |