Home > Visual Basic Classic > Controls > Schaltfläche in der Taskleiste blinken lassen

Schaltfläche in der Taskleiste blinken lassen

Veröffentlicht am 15.10.2008 von Sebastian Krogolewski

Artikelinformationen

Sprache:
Visual Basic 6
Datenbank:
keine

Artikel speichern

del.icioMister WongGoogleLinkarenaYiggSpurlFurl

Artikel bewerten

Bewertng:4.00 / 5 (1 mal bewertet)

Manchmal ist es nötig, den Benutzer zu zeigen, dass die eigene Anwendung seine Aufmerksamkeit benötigt. Im Normalfall reicht eine Messagebox aus. Diese ist aber ziemlich aufdringlich bzw. wird unter umständen auch ignoriert.

Ein weniger aufdringlicher Weg, die Aufmerksamkeit des Benutzers auf sich zu ziehen, ist das Blinken der Schaltfläche in der Taskleiste (falls vorhanden) oder der Fenstertitelleiste, entweder auf eine begrenzte Anzahl an Blinkvorgängen oder solange bis der Benutzer das Fenster wieder in den Vordergrund holt.

Visual Basic bietet hier keine bereits fertige Funktionalität an. Aber durch Einbinden der Win API kann man das nachholen. Die Win API Funktion FlashWindowEX aus der User32.Dll bietet uns die Möglichkeit, dieses Blinken zu starten oder zu stoppen.

 

Einbinden der Win API Funktion FlashWindowEx als FlashWindowExAPI aus der User32.Dll:

1
Private Declare Function FlashWindowExAPI Lib "user32" Alias "FlashWindowEx" (FWInfo As FLASHWINFO) As Long

 

FlashWindowEx erwartet 1 Parameter:

FWInfo: Zeiger auf eine FLASHWINFO Struktur.

 

Rückgabewert:

Der Rückgabewert liefert den Zustand des Fensters, bevor die FlashWindowEx Funktion aufgerufen wurde.

0: Wenn die Fenstertitelleiste als inaktive Titelleiste vor dem Aufruf gezeichnet wurde.

!0: Wenn die Fenstertitelleiste als aktive Titelleiste vor dem Aufruf gezeichnet wurde.

 

Deklarieren der FLASHWINFO Struktur:

1
2
3
4
56
7
Private Type FLASHWINFO
    cbSize As Long    'Strukturgrösse in bytes
    hwnd As Long      'Fensterhandle
    dwFlags As Long   'Flags zum Blinkstatus
    uCount As Long    'Blinkanzahl    dwTimeout As Long 'Blinkintervall in Millisekunden
End Type

 

Beschreibung:

cbSize: größe der Struktur in bytes.

hwnd: Das Handle des Fensters, welches blinken soll.

dwFlags: Blinkstatus, kann aus einen oder mehreren der folgenden Werte bestehen.

 

Konstante Wert  Beschreibung 
FLASHW_STOP &H0 Stoppt das blinken, versetzt das Fenster in den Urzustand.
FLASHW_CAPTION &H1 Lässt nur die Titelleiste des Fensters blinken.
FLASHW_TRAY &H2 Lässt nur die Schaltfläche in der Taskleiste blinken.
FLASHW_ALL &H3 Lässt die Schaltfläche in der Taskleiste und die Titelleiste des Fensters blinken
FLASHW_TIMER &H4 Lässt solange blinken bis für das Fenster das FLASHW_STOP Flag gesetzt wird.
FLASHW_TIMERNOFG &HC Blinkt solange bis das Fenster in den Vordergrund geholt wird.

 

uCount: Anzahl der Blinkvorgänge

dwTimeout: der Intervall in Millisekunden, der zwischen den beiden Blinkzuständen vergehen soll, ist der Wert 0 wird der Standard Wert für die Cursor Blink Rate verwendet

 

Deklarieren der Konstanten, die den Flags entsprechen:

1
2
3
4
56
7
'FlashWindowEx Flags
Private Const FLASHW_STOP = &H0                          'Stoppt das blinken, versetzt das Fenster in den Urzustand
Private Const FLASHW_CAPTION = &H1                       'Es blinkt nur die Titelleiste des Fensters
Private Const FLASHW_TRAY = &H2                          'Es blinkt nur die Schaltfläche in der Taskleiste
Private Const FLASHW_ALL = FLASHW_CAPTION Or FLASHW_TRAY 'Es blinkt die Schaltfläche in der Taskleiste und die Titelleiste des FenstersPrivate Const FLASHW_TIMER = &H4                         'Blinkt solange bis für das Fenster das FLASHW_STOP Flag gesetzt wird
Private Const FLASHW_TIMERNOFG = &HC                     'Blinkt solange bis das Fenster in den Vordergrund geholt wird

 

Deklaration eines Enums, um nicht direkt mit den Konstanten arbeiten zu müssen.

1
2
3
4
56
7
8
Private Enum enFlashWindowFlag
    vbFlashWindowStop = FLASHW_STOP
    vbFlashWindowCaption = FLASHW_CAPTION
    vbFlashWindowTray = FLASHW_TRAY
    vbFlashWindowAll = FLASHW_ALL    vbFlashWindowTimer = FLASHW_TIMER
    vbFlashWindowTimerNoForeground = FLASHW_TIMERNOFG
End Enum

 

VB Funktion
1
2
3
4
56
7
8
9
1011
12
13
14
1516
Private Sub FlashWindowEx(ByVal hwnd As Long, ByVal Flags As enFlashWindowFlag, Optional ByVal Count As Long = 0, _
                          Optional ByVal Timeout As Long = 0)
Dim FWInfo As FLASHWINFO
 
'FlashWInfo Struktur mit Daten befüllenWith FWInfo
    .cbSize = 20
    .hwnd = hwnd
    .dwFlags = Flags
    .uCount = Count    .dwTimeout = Timeout
End With
 
'Aufruf der API Funktion
FlashWindowExAPI FWInfoEnd Sub

Downloads

Suchbegriffe

VB6, Visual Basic, FlashWindowEx, FlashWindowExAPI, FlashWindow

Suche