A mellékelt példa ComboBox kontroljában ki kell választanunk a villogtatás típusát, mely a MŰVELET gombbal indítható. A villogtatás 100 felvillantást jelent, melyet a LEÁLLÍTÁS gombbal szakíthatunk meg.
A művelet elvégzésére a USER32.DLL-ben megtalálható FlashWindowEx metódust használjuk fel, melynek menedzselt deklarációját a Win32 osztályban helyeztük el.
[DllImport("user32.Dll", CharSet=CharSet.Auto)]
public static extern int FlashWindowEx(ref FLASHWINFO f);
A metódus egy FLASHWINFO típusú struktúrát vár paraméterként, melyben meg kell adnunk a megfelelő adatokat. A deklaráció szintén ebben az osztályban kapott helyet.
public struct FLASHWINFO
{
public uint cbSize;
public IntPtr hwnd;
public int dwFlags;
public int uCount;
...
}
A mezők jelentése a következő:
- A struktúra mérete
- A villogtatandó ablak azonosítója
- Villogtatás típusa
- Villogtatás száma
A típusba egy konstanst kell megadni, mely meghatározza, hogy az adott ablaknak a fejléce, a Tálcán található ikonja, vagy mindkettő villogtatandó.
A műveletet a következőképpen végezzük el: első lépésben a struktúrát példányosítjuk.
Win32.FLASHWINFO f = new Win32.FLASHWINFO();
Megadjuk a méretadatot.
f.cbSize = (uint)Marshal.SizeOf(f);
Megadjuk az ablakazonosítót.
A művelet számát.
Majd a típustól függő konstanst.
switch(comboBox1.SelectedIndex)
{
case 0: type = Win32.FLASHW_CAPTION;
break;
...
A struktúrát átadva paraméterként meghívjuk a metódust.
Win32.FlashWindowEx(ref f);
A leállításkor a FLASHW_STOP konstanst kell megadnunk a struktúra meghatározott mezőjében, majd újra meg kell hívni a metódust.
f.dwFlags = Win32.FLASHW_STOP;
Win32.FlashWindowEx(ref f);
A többi adat változatlan. A használható konstansok listája a következő:
- FLASHW_STOP
- FLASHW_CAPTION
- FLASHW_TRAY
- FLASHW_ALL = FLASHW_CAPTION | FLASHW_TRAY