HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Időzónára vonatkozó információk lekérdezése


Példaprogram letöltése

8561 bájt

A Windows számtalan információt tárol, melyeket a .NET osztályainak metódusaival nem tudunk elérni. Az ilyen adatok lekérdezésére igénybe kell vennünk bizonyos API függvényeket. Cikkünkben bemutatjuk, hogyan kérdezhetünk le időzónára vonatkozó információkat egy API függvény segítségével. A metódus meghívása után egy előre definiált struktúrában kaphatjuk meg az információkat.

A mellékelt példában induláskor automatikusan meghívjuk a Kernel32.dll GetTimeZoneInformation nevű metódusát, és a visszaadott adathalmazt egy ListBox kontrolban jelenítjük meg. A metódust a Windows 95 verziójától kezdve használhatjuk.
A metódus meghívásához egy osztályt hozunk létre alkalmazásunkban, melynek neve TZClass lesz, és statikus metódusában – GetTimeZoneInfo – hívjuk meg az API függvényt.
A GetTimeZoneInformation függvény lekérdezi az időzónára vonatkozó operációs rendszer által nyilvántartott adatokat, és egy TIME_ZONE_INFORMATION nevű tömbben adja vissza a kapott értékeket. Annak érdekében, hogy C#-ból is meghívhassuk a metódust, deklarálnunk kell egy ilyen struktúrát.
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
struct TimeZoneInformation
{  
  public int bias;
  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
  public string standardName;
  public SystemTime standardDate;
  public int standardBias;
  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
  public string daylightName;
  public SystemTime daylightDate;
  public int daylightBias;
}
A struktúra fontos mezőinek adattartalmát a következő táblázat foglalja össze:
Mezőnév Adattartalom
bias Az érték egy szám, mely kifejezi, hogy a helyi időt hány perccel kell csökkenteni vagy növelni ahhoz, hogy megkapjuk a Koordinált Egységesített Időt (UTC). A képlet: UTC = helyi idő + bias. A bias esetünkben -60.
standardName A számítógépen használatos standard időmérés neve.
standardDate Annak az időpontja egy SYSTEMTIME nevű struktúrában, amikor megtörténik a számítógépen az átállás a STANDARD és a DAYLIGHT időszámítás között.
daylightName Az időzónában használt másik időszámítás neve.
daylightDate Annak az időpontja egy SYSTEMTIME nevű struktúrában, amikor megtörténik a számítógépen az átállás a DAYLIGHT időszámításról a STANDARD időszámításra.
A struktúrában kapott dátumok számára egy SYSTEMTIME nevű struktúrát is kell deklarálni, melyben a mezők egész számként tartalmazzák a dátumot.
struct SystemTime
{
  public short wYear;
  public short wMonth;
  public short wDayOfWeek;
  public short wDay;
  public short wHour;
  public short wMinute;
  public short wSecond;
  public short wMilliseconds;
}
A függvény sikeres végrehajtása esetén 0, 1 vagy 2 értékkel tér vissza, amennyiben nem sikerült a lekérdezés, a visszatérési értéke a 4 bájton ábrázolható legnagyobb érték.
A visszatérési értékek számára létrehoztunk egy felsorolt típust:
enum TZResult : uint
{
  TIME_ZONE_ID_UNKNOWN = 0,
  TIME_ZONE_ID_STANDARD = 1,
  TIME_ZONE_ID_DAYLIGHT = 2,
  TIME_ZONE_ID_INVALID = 0xFFFFFFFF
}
A GetTimeZoneInfo metódusunk egy karakterlánc-tömbbel tér vissza, melyben eltároljuk a kapott paramétereket, értelmes string-ekben megjelenítve azokat. Ehhez először példányosítjuk a paraméter struktúrát.
TimeZoneInformation timeZoneInfo = new TimeZoneInformation();
Majd meghívjuk a metódust.
TZResult res = GetTimeZoneInformation(ref timeZoneInfo);
...
A ListBox kontrolnak pedig átadjuk adatforrásként a tömböt.
listBox1.DataSource = TZClass.GetTimeZoneInfo();

Cikksorozat

#IDKategóriaCikk címeSorozat
3643DelphiFormEditor1. rész
3689DelphiProject és modul információk2. rész
3719DelphiMegnyitás, mentés3. rész
3749DelphiKódszerkesztő4. rész
3778DelphiForráskód írása, olvasása5. rész
3809DelphiInterfész a kódszerkesztő ablakhoz6. rész
3839DelphiKijelölt blokkok7. rész
3869DelphiA buffer beállításai8. rész
3899DelphiKörnyezeti és Project opciók9. rész
3929DelphiKurzor a kódszerkesztőben10. rész
3959DelphiKeresés és csere beállításai11. rész


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