HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Merevlemez-információk megjelenítése a Tálcán


Példaprogram letöltése

9084 bájt

Az bizonyára mindenki számára ismert, hogy a Visual Studio.NET Windows-os komponensei közül a NotifyIcon komponens az, melynek segítségével egy tetszőleges ikont rendelhetünk az alkalmazásunkhoz, és az ikon megjelenik a Tálcán a programunk futásának idejére. Az ikon lehet egy előre megadott elérési útvonalon megtalálható képállomány, vagy egy futási időben generált kép. Cikkünkben elkészítünk egy példát, melyben a program elindulásakor lekérdezzük a számítógépen elérhető merevlemez-meghajtókat, majd a legelső meghajtó területadatainak felhasználásával annak grafikus kijelzésére generálunk egy ikont, majd ezt helyezzük el a Tálcán.

A program indulásakor meghatározzuk, hogy milyen merevlemez-meghajtók találhatók a számítógépen, és ezek betűjelét kiírjuk a Form felületén található ComboBox kontrolba. A lista legelső betűjelét felhasználva lekérdezzük a meghajtó kapacitására és kihasználtságára vonatkozó információkat, majd ezek alapján generálunk egy folyamatjelzőt jelképező ikont, az adott meghajtó foglaltságát jelzendő. Az ikon fölé mozgatva a kurzort bővebb információ jelenik meg a meghajtó állapotáról.
A megoldáshoz szükségünk van a Microsoft Scripting Runtime COM komponensre, melyet a projekthez kell adnunk, és Scripting néven hivatkozhatunk rá. Megvizsgáljuk, hogy miképp használható a Scripting komponens FileSystemObject objektuma a merevlemez meghajtóinak vizsgálatához, valamint hogyan generálható kép a kapott információkból.
A GetDriveinfos metódusban lekérdezzük a megadott merevlemez információit, és egy 4 elemű tömbben adjuk vissza az adatokat. A tömb tartalmazza a meghajtó nevét, a teljes kapacitást, és a szabad terület méretét bájtban, valamint a százalékos értéket.
private string[] GetDriveInfos()
{
Példányosítjuk a FileSystemObject objektumot, valamint lekérdezzük a meghajtókat.
  Scripting.FileSystemObject fso = new Scripting.FileSystemObject();
  IEnumerator ie = fso.Drives.GetEnumerator();
A kapott listán végighaladva meghatározzuk, hogy a megadott meghajtó benne van-e a csoportban. Ha igen, akkor kigyűjtjük az adatait.
  ...
  while (ie.MoveNext())
  {
    id = (Scripting.IDrive)ie.Current;
    if (id.DriveType == Scripting.DriveTypeConst.Fixed && id.DriveLetter == drive)
  ...
Amennyiben a megadott meghajtó nem megfelelő, akkor a tömb NULL értékű lesz, és később megakadályozzuk, hogy megjelenjen az ikon.
A CreateIcon metódussal generáljuk az ikon képét úgy, hogy a GetDriveInfos metódus által visszaadott tömböt feldolgozzuk.
A megoldás lényege, hogy egy Bitmap objektumot rajzolunk meg, és ezt használjuk fel az ikon létrehozására.
private Icon CreateIcon()
{
  Bitmap bitmap = new Bitmap(16,16);
Létrehozunk egy Graphics objektumot, hogy a Bitmap objektumra rajzolhassunk.
  Graphics g = Graphics.FromImage(bitmap);
A folyamatjelző-szerű ikont úgy rajzoljuk meg, hogy egy fekete szegélyű téglalapot sárga színnel töltünk ki a foglaltság arányában.
A kitöltő színhez szükségünk van egy ecsetre.
  SolidBrush graphBack = new SolidBrush(Color.Yellow);
Amennyiben a lekérdezett tömb nem NULL értékű, akkor megkezdjük a rajzolást.
  driveinfo = GetDriveInfos();
  if (driveinfo != null)
  {
A keretbe rajzolt téglalap szélessége függ a foglaltság százalékos értékétől, így azt kiszámoljuk.
    decimal width = Convert.ToDecimal(driveinfo[3])/100*14;
Szükség van egy fekete tollra a keret rajzolásához.
    Pen pr = new Pen(Color.Black, 1);
Megrajzoljuk a keretet.
    g.DrawRectangle(pr,0,3,15,8);
Majd a kitöltő téglalapot, egy pixellel beljebb kezdve, hogy jobban mutasson.
    g.FillRectangle(graphBack,0,4,Convert.ToInt32(width),6);
Az ikon objektuma a Bitmap objektumból generálódik.
    icon = Icon.FromHandle(bitmap.GetHicon());
  }
}
Az ikon kirajzolása előtt a NotifyIcon komponens Icon property-jének értékül adjuk a generált ikont.
notifyIcon1.Icon = CreateIcon();
A komponensre duplán kattintva megjeleníthetjük a Form-ot, melyen – amennyiben több meghajtóval rendelkezünk – kiválaszthatunk egy újabb meghajtót, melynek adataiból generálunk egy újabb ikont.
Az ikonon a jobb egérgombbal kattintva egy menü jeleníthető meg, melynek pontjaival elrejthető, vagy megjeleníthető a Form, vagy leállítható a program.



Cikksorozat



Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 603. 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 |