Freigeben über


Shell_NotifyIconW-Funktion (shellapi.h)

Sendet eine Nachricht an den Statusbereich der Taskleiste.

Syntax

BOOL Shell_NotifyIconW(
  [in] DWORD            dwMessage,
  [in] PNOTIFYICONDATAW lpData
);

Parameter

[in] dwMessage

Typ: DWORD-

Ein Wert, der die aktion angibt, die von dieser Funktion ausgeführt werden soll. Sie kann einen der folgenden Werte aufweisen:

NIM_ADD (0x00000000)

0x00000000. Fügt dem Statusbereich ein Symbol hinzu. Das Symbol erhält einen Bezeichner in der NOTIFYICONDATA- Struktur, auf die durch lpdata-verwiesen wird – entweder über seine uID- oder guidItem- Member. Dieser Bezeichner wird in nachfolgenden Aufrufen von Shell_NotifyIcon verwendet, um spätere Aktionen für das Symbol auszuführen.

NIM_MODIFY (0x00000001)

0x00000001. Ändert ein Symbol im Statusbereich. NOTIFYICONDATA Struktur, auf die lpdata verweist, verwendet die ID, die ursprünglich dem Symbol zugewiesen wurde, als sie dem Infobereich (NIM_ADD) hinzugefügt wurde, um das zu ändernde Symbol zu identifizieren.

NIM_DELETE (0x00000002)

0x00000002. Löscht ein Symbol aus dem Statusbereich. NOTIFYICONDATA- Struktur, auf die lpdata verweist, verwendet die ID, die ursprünglich dem Symbol zugewiesen wurde, als sie dem Infobereich (NIM_ADD) hinzugefügt wurde, um das zu löschende Symbol zu identifizieren.

NIM_SETFOCUS (0x00000003)

0x00000003. Shell32.dll Version 5.0 und höher nur. Gibt den Fokus auf den Infobereich der Taskleiste zurück. Symbole für den Infobereich sollten diese Meldung verwenden, wenn sie ihren UI-Vorgang abgeschlossen haben. Wenn das Symbol z. B. ein Kontextmenü anzeigt, aber der Benutzer ESC drückt, um es abzubrechen, verwenden Sie NIM_SETFOCUS, um den Fokus auf den Infobereich zurückzugeben.

NIM_SETVERSION (0x00000004)

0x00000004. Shell32.dll Version 5.0 und höher nur. Weist den Infobereich an, sich entsprechend der versionsnummer zu verhalten, die im uVersion Member der Struktur angegeben ist, auf das durch lpdataverwiesen wird. Die Versionsnummer gibt an, welche Member erkannt werden.

NIM_SETVERSION muss jedes Mal aufgerufen werden, wenn ein Benachrichtigungsbereichssymbol hinzugefügt wird (NIM_ADD). Es muss nicht mit NIM_MODIFY aufgerufen werden. Die Versionseinstellung wird nicht beibehalten, sobald sich ein Benutzer abmeldet.

Ausführliche Informationen finden Sie im Abschnitt "Hinweise".

[in] lpData

Typ: PNOTIFYICONDATA

Ein Zeiger auf eine NOTIFYICONDATA--Struktur. Der Inhalt der Struktur hängt vom Wert dwMessageab. Es kann ein Symbol definieren, das dem Infobereich hinzugefügt werden soll, dazu führen, dass dieses Symbol eine Benachrichtigung anzeigt oder ein Symbol identifiziert, das geändert oder gelöscht werden soll.

Rückgabewert

Typ: BOOL-

Gibt TRUE zurück, wenn dies erfolgreich ist, oder FALSE andernfalls. Wenn dwMessage- auf NIM_SETVERSION festgelegt ist, gibt die Funktion TRUE zurück, wenn die Version erfolgreich geändert wurde, oder FALSE, wenn die angeforderte Version nicht unterstützt wird.

Bemerkungen

Ab Windows 2000 (Shell32.dll Version 5.0), wenn Sie das uVersion Mitglied der NOTIFYICONDATA Struktur festlegen, auf die durch lpdata- auf NOTIFYICON_VERSION_4 oder höher verwiesen wird, werden Shell_NotifyIcon Maus- und Tastaturereignisse anders behandelt als in früheren Versionen von Windows. Zu den Unterschieden gehören die folgenden:

  • Wenn ein Benutzer das Kontextmenü eines Benachrichtigungssymbols mit der Tastatur auswählt, sendet die Shell jetzt die zugeordnete Anwendung eine WM_CONTEXTMENU Nachricht. Frühere Versionen senden WM_RBUTTONDOWN und WM_RBUTTONUP Nachrichten.
  • Wenn ein Benutzer ein Benachrichtigungssymbol mit der Tastatur auswählt und es mit der LEERTASTE oder EINGABETASTE aktiviert, sendet die Version 5.0 Shell die zugeordnete Anwendung an eine NIN_KEYSELECT Benachrichtigung. Frühere Versionen senden WM_RBUTTONDOWN und WM_RBUTTONUP Nachrichten.
  • Wenn ein Benutzer ein Benachrichtigungssymbol mit der Maus auswählt und mit der EINGABETASTE aktiviert, sendet die Shell nun die zugeordnete Anwendung an eine NIN_SELECT Benachrichtigung. Frühere Versionen senden WM_RBUTTONDOWN und WM_RBUTTONUP Nachrichten.
Ab Windows XP (Shell32.dll Version 6.0), wenn ein Benutzer den Mauszeiger über ein Symbol übergibt, dem eine Sprechblasenbenachrichtigung zugeordnet ist, sendet die Shell die folgenden Meldungen:
  • NIN_BALLOONSHOW. Gesendet, wenn die Sprechblase angezeigt wird (Sprechblasen werden in die Warteschlange gestellt).
  • NIN_BALLOONHIDE. Wird gesendet, wenn die Sprechblase verschwindet. Beispiel: Wenn das Symbol gelöscht wird. Diese Nachricht wird nicht gesendet, wenn die Sprechblase aufgrund eines Timeouts geschlossen wird oder der Benutzer mit der Maus klickt.

    Ab Windows 7 wird NIN_BALLOONHIDE auch gesendet, wenn eine Benachrichtigung mit dem NIIF_RESPECT_QUIET_TIME Flag versuche festgelegt wird, während der Ruhezeit anzuzeigen (die erste Stunde eines Benutzers auf einem neuen Computer). In diesem Fall wird die Sprechblase niemals angezeigt.

  • NIN_BALLOONTIMEOUT. Wird gesendet, wenn die Sprechblase aufgrund eines Timeouts geschlossen wird.
  • NIN_BALLOONUSERCLICK. Wird gesendet, wenn die Sprechblase geschlossen wird, weil der Benutzer mit der Maus geklickt hat.
Zusätzlich zu diesen Nachrichten, ab Windows Vista (Shell32.dll Version 6.0.6), fügt die Windows Vista Shell auch die folgenden Meldungen hinzu, wenn ein Benutzer den Mauszeiger über ein Symbol übergibt, dem eine Sprechblasenbenachrichtigung zugeordnet ist:
  • NIN_POPUPOPEN. Wird gesendet, wenn der Benutzer mit dem Mauszeiger auf ein Symbol zeigt, dass die umfangreichere Popupbenutzeroberfläche anstelle einer standardmäßigen Text-QuickInfo verwendet werden soll.
  • NIN_POPUPCLOSE. Wird gesendet, wenn ein Cursor nicht mehr auf ein Symbol zeigt, um anzugeben, dass die umfangreiche Popup-UI geschlossen werden soll.
Unabhängig von der Betriebssystemversion können Sie auswählen, wie sich die Shell verhalten soll, indem Sie Shell_NotifyIcon aufrufen, wobei dwMessage- auf NIM_SETVERSIONfestgelegt ist. Legen Sie das uVersion- Mitglied der NOTIFYICONDATA- Struktur fest, auf die durch lpdata- verwiesen wird, um anzugeben, ob Windows 2000, Windows Vista oder Vorversion 5.0 (Windows 95) verhalten soll.
Hinweis Die oben beschriebenen Nachrichten sind keine herkömmlichen Windows-Nachrichten. Sie werden als lParam- Wert der anwendungsdefiniert Nachricht gesendet, die im uCallbackMessage Member der NOTIFYICONDATA--Struktur durch lpdata-angegeben wird, wenn Shell_NotifyIcon mit NIM_ADD dem in dwMessagefestgelegten Flag aufgerufen wird.
 
Ab Windows XP Service Pack 2 (SP2) kann ein benutzerdefiniertes Symbol in der Benachrichtigungssprechblase angezeigt werden. Dadurch kann der Aufrufvorgang die Benachrichtigung über die zuvor verfügbaren Optionen für Informationen, Warnungen und Fehler hinaus anpassen und von anderen Arten von Benachrichtigungen für den Benutzer unterscheiden.
 
Unter Windows 10 werden die Sprechblasen als Bannerbenachrichtigungen angezeigt, die dann im Benachrichtigungscenter verbleiben, bis sie geschlossen wurden. Unter Windows 11 folgt das Verhalten von Bannerbenachrichtigungen genauer dem Legacyverhalten, um sie vorübergehend zu machen. Wenn eine Sperrbenachrichtigung ausläuft oder anderweitig geschlossen wird, wird sie nicht im Benachrichtigungscenter angezeigt.
 

Anmerkung

Der shellapi.h-Header definiert Shell_NotifyIcon als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- shellapi.h
Library Shell32.lib
DLL- Shell32.dll (Version 4.0 oder höher)
API-Satz ext-ms-win-shell-shell32-l1-2-1 (eingeführt in Windows 10, Version 10.0.10240)

Siehe auch

Benachrichtigungen und der Benachrichtigungsbereich