Taskbareintrag blinken lassen
Um einen Taskbareintrag blinken zu lassen, kann die Funktion FlashWindow verwendet werden. Dazu wird ihr ein Handle übergeben:
procedure TForm1.Button1Click(Sender: TObject); begin FlashWindow(Application.Handle, True); end;
Um ein Formular blinken zu lassen, wird einfach das Handle des Formulars übergeben:
procedure TForm1.Button1Click(Sender: TObject); begin FlashWindow(self.Handle, True); end;
Flexibler ist man allerdings mit der erweiterten FlashWindow-Funktion, FlashWindowEx. Sie erwartet als Parameter eine Variable vom Typ FLASHWINFO, der in der Unit Windows deklariert ist:
uses Windows; ... procedure TForm1.Button1Click(Sender: TObject); var Flash: FLASHWINFO; begin FillChar(Flash, SizeOf(Flash), 0); Flash.cbSize:=SizeOf(Flash); Flash.hwnd:=Application.Handle; Flash.uCount:=5; Flash.dwTimeOut:=2000; Flash.dwFlags:=FLASHW_ALL; FlashWindowEx(Flash); end;
Das Feld „hwnd“ entspricht dem ersten Parameter der FlashWindow-Funktion. Über „uCount“ steuert man, wie oft geblinkt werden soll. Wie lange jeder Intervall dauern soll, wird dem Feld „dwTimeOut“ übergeben (Zeit in Millisekunden). Über „dwFlags“ lassen sich letztendlich noch einige Einstelungen tätigen. Im Beispiel hat die Variable den Wert „FLASHW_ALL“, wodurch der Taskbar-Button und die Titelleiste blinken werden. Es kann zusäzlich die Konstante FLASHW_TIMER übergeben werden, wodurch die Titelleiste und/oder der Taskbutton solange blinkt, bis die Funktion wiederholt mit dem Flag FLASHW_STOP aufgerufen wird:
procedure TForm1.Button1Click(Sender: TObject); var Flash: FLASHWINFO; begin FillChar(Flash, SizeOf(Flash), 0); Flash.cbSize:=SizeOf(Flash); Flash.hwnd:=Application.Handle; Flash.dwFlags:=FLASHW_ALL or FLASHW_TIMER; Flash.dwTimeout:=1000; FlashWindowEx(Flash); end; procedure TForm1.Timer1Timer(Sender: TObject); var Flash: FLASHWINFO; begin FillChar(Flash, SizeOf(Flash), 0); Flash.cbSize:=SizeOf(Flash); Flash.hwnd:=Application.Handle; Flash.dwFlags:=FLASHW_STOP; FlashWindowEx(Flash); end;
Stünde das Flag auf FLASHW_TIMERNOFG würden die Elemente blinken, bis das Fenster in den Vordergrund geholt wird.
Weitere Informationen finden sich im PSDK unter den Stichworten „FlashWindow“, „FlashWindowEx“ und „FLASHWINFO“.