A könnyebb használat kedvéért készítünk három property-t a Win32 osztályunkban, melyeken keresztül az alábbi feladatokat oldhatjuk meg:
- Title - a konzol ablak fejléc szövegének olvasása, írása
- CursorVisible - a szöveg kurzor láthatóságának olvasása, megváltoztatása
- CursorHeight - a szöveg kurzor magasságának olvasása, megváltoztatása
A Title property értékének kiolvasásakor a GetConsoleTitle függvényt kell használnunk, mely hasonlóan az eddigiekhez a Kernel32.dll-ben található. A függvény első paraméterében kapjuk vissza a fejléc szövegét, míg a másodikban azt kell megadnunk, hogy az átadott első paraméter maximum hány karaktert képes tárolni.
public static string Title
{
get
{
StringBuilder title = new StringBuilder(TITLE_LENGTH);
GetConsoleTitle(title, TITLE_LENGTH);
return title.ToString();
}
A fejléc szöveg megváltoztatásakor a SetConsoleTitle függvényt használhatjuk. Ennek egyetlen paraméterében egyszerűen meg kell adnunk az új fejléc szöveget.
set
{
if (value.Length<TITLE_LENGTH)
{
SetConsoleTitle(value);
}
}
}
A kurzor láthatóságát a GetConsoleCursorInfo függvény hívásával határozhatjuk meg. Az eredményt egy CONSOLE_CURSOR_INFO struktúrában kapjuk meg, sok más adattal együtt. A lekérdezés futtatása után az eredmény bVisible mezőjét kell kiolvasnunk.
public static bool CursorVisible
{
get
{
CONSOLE_CURSOR_INFO ConsoleCursorInfo = new CONSOLE_CURSOR_INFO();
GetConsoleCursorInfo(hStdConsoleOutput, ref ConsoleCursorInfo);
return ConsoleCursorInfo.bVisible;
}
Amennyiben a láthatóságot szeretnénk megváltoztatni, akkor első lépésként szintén a GetConsoleCursorInfo függvényt használjuk annak érdekében, hogy legyen egy feltöltött CONSOLE_CURSOR_INFO struktúránk. Ennek a struktúrának a bVisible mezőjét ezek után tetszés szerint megváltoztatjuk, majd a SetConsoleCursorInfo függvényt felhasználva beállítjuk az új értékeket a konzol ablakra.
set
{
CONSOLE_CURSOR_INFO ConsoleCursorInfo = new CONSOLE_CURSOR_INFO();
GetConsoleCursorInfo(hStdConsoleOutput, ref ConsoleCursorInfo);
ConsoleCursorInfo.bVisible = value;
SetConsoleCursorInfo(hStdConsoleOutput, ref ConsoleCursorInfo);
}
}
A kurzor magasságát a fentiekhez hasonlóan tudjuk lekérdezni, illetve beállítani, a különbség csupán annyi, hogy a CONSOLE_CURSOR_INFO struktúrának most a dwSize mezőjét kell használnunk.
public static int CursorHeight
{
get
{
CONSOLE_CURSOR_INFO ConsoleCursorInfo = new CONSOLE_CURSOR_INFO();
GetConsoleCursorInfo(hStdConsoleOutput, ref ConsoleCursorInfo);
return ConsoleCursorInfo.dwSize;
}
A dwSize mező értéke 1 és 100 közé kell, hogy essen. Minél nagyobb számot adunk meg, annál magasabb lesz a szövegkurzor.
set
{
if (value >= 1 && value <= 100)
{
CONSOLE_CURSOR_INFO ConsoleCursorInfo = new CONSOLE_CURSOR_INFO();
GetConsoleCursorInfo(hStdConsoleOutput, ref ConsoleCursorInfo);
ConsoleCursorInfo.dwSize = value;
SetConsoleCursorInfo(hStdConsoleOutput, ref ConsoleCursorInfo);
}
}
}
Az elkészült függvények felhasználása most egyszerű:
static void Main(string[] args)
{
Console.WriteLine(Win32.Title);
Win32.Title = "Software Online példaprogram © 2002 (http://www.SoftwareOnline.hu)";
Console.WriteLine(Win32.CursorHeight.ToString());
Win32.CursorHeight = 75;
Console.ReadLine();
}