共用方式為


Shell_NotifyIconA函式 (shellapi.h)

將訊息傳送至任務欄的狀態區域。

語法

BOOL Shell_NotifyIconA(
  [in] DWORD            dwMessage,
  [in] PNOTIFYICONDATAA lpData
);

參數

[in] dwMessage

類型:DWORD

值,指定要由這個函式採取的動作。 它可以有下列其中一個值:

NIM_ADD (0x00000000)

0x00000000。 將圖示新增至狀態區域。 圖示會透過其 uIDguidItem 成員,在 NOTIFYICONDATA 結構中指定標識符。 此標識碼用於後續呼叫 Shell_NotifyIcon,以在圖示上執行後續動作。

NIM_MODIFY (0x00000001)

0x00000001。 修改狀態區域中的圖示。 NOTIFYICONDATA 結構,lpdata 所指向的結構 會使用原本指派給圖示的標識碼,當它新增至通知區域 (NIM_ADD) 時,識別要修改的圖示。

NIM_DELETE (0x00000002)

0x00000002。 從狀態區域刪除圖示。 NOTIFYICONDATA 結構所指向的 lpdata 會使用原本指派給圖示的標識碼,當它新增至通知區域 (NIM_ADD) 以識別要刪除的圖示。

NIM_SETFOCUS (0x00000003)

0x00000003。 Shell32.dll 5.0 版和更新版本只會。 將焦點傳回任務列通知區域。 通知區域圖示應該會在完成UI作業時使用此訊息。 例如,如果圖示顯示快捷方式功能表,但使用者按下 ESC 取消它,請使用 NIM_SETFOCUS 將焦點傳回通知區域。

NIM_SETVERSION (0x00000004)

0x00000004。 Shell32.dll 5.0 版和更新版本只會。 指示通知區域根據由 lpdata所指向之結構的 uVersion 成員所指定的版本號碼運作。 版本號碼會指定可辨識的成員。

每次新增通知區域圖示時,都必須呼叫NIM_SETVERSION(NIM_ADD)。 不需要使用 NIM_MODIFY呼叫。 一旦使用者註銷,版本設定就不會保存。

如需詳細資訊,請參閱一節。

[in] lpData

類型:PNOTIFYICONDATA

NOTIFYICONDATA 結構的指標。 結構的內容取決於 dwMessage的值。 它可以定義圖示以新增至通知區域、導致該圖示顯示通知,或識別要修改或刪除的圖示。

傳回值

類型:BOOL

如果成功,則傳回 true true,否則會 傳回 false。 如果 dwMessage 設定為 NIM_SETVERSION,則函式會在成功變更版本時傳回 true TRUE,如果不支援要求的版本,則傳回 FALSE

言論

自 Windows 2000 起(Shell32.dll 5.0 版),如果您 設定 NOTIFYICONDATA 成員 NOTIFYICONDATA 結構所指向的 lpdata 至 NOTIFYICON_VERSION_4 或更高版本,Shell_NotifyIcon 滑鼠和鍵盤事件會以不同於舊版 Windows 處理。 差異如下:

  • 如果使用者使用鍵盤選取通知圖示的快捷方式功能表,Shell 現在會傳送相關聯的應用程式 WM_CONTEXTMENU 訊息。 舊版會傳送 WM_RBUTTONDOWNWM_RBUTTONUP 訊息。
  • 如果使用者選取鍵盤的通知圖示,並使用SPACEBAR或ENTER鍵加以啟動,則5.0版殼層會將相關聯的應用程式傳送NIN_KEYSELECT通知。 舊版會傳送 WM_RBUTTONDOWNWM_RBUTTONUP 訊息。
  • 如果使用者選取具有滑鼠的通知圖示,並使用 ENTER 鍵加以啟動,Shell 現在會傳送相關聯的應用程式NIN_SELECT通知。 舊版會傳送 WM_RBUTTONDOWNWM_RBUTTONUP 訊息。
從 Windows XP (Shell32.dll 6.0 版),如果使用者將滑鼠指標傳遞至與氣球通知相關聯的圖示上,Shell 會傳送下列訊息:
  • NIN_BALLOONSHOW。 顯示氣球時傳送 (氣球已排入佇列)。
  • NIN_BALLOONHIDE。 當氣球消失時傳送。 例如,刪除圖示時。 如果因逾時或使用者按兩下滑鼠而關閉氣球,則不會傳送此訊息。

    從 Windows 7 開始,當設定 NIIF_RESPECT_QUIET_TIME 旗標的通知嘗試在安靜時間顯示時,也會傳送NIN_BALLOONHIDE (新電腦上的使用者第一小時)。 在此情況下,絕對不會顯示氣球。

  • NIN_BALLOONTIMEOUT。 因逾時而關閉氣球時傳送。
  • NIN_BALLOONUSERCLICK。 關閉氣球時傳送,因為使用者按下滑鼠。
除了這些訊息之外,從 Windows Vista (Shell32.dll 6.0.6 版)開始,如果使用者將滑鼠指標傳遞至與氣球通知相關聯的圖示上,Windows Vista Shell 也會新增下列訊息:
  • NIN_POPUPOPEN。 當使用者將游標暫留在圖示上方時傳送,以指出應該使用更豐富的快顯 UI 來取代標準文字工具提示。
  • NIN_POPUPCLOSE。 當游標不再停留在圖示上時傳送,表示應該關閉豐富的快顯UI。
不論操作系統版本為何,您可以呼叫 dwMessage 設定為 NIM_SETVERSIONShell_NotifyIcon,以選取殼層應該運作的方式。 設定 NOTIFYICONDATA 結構所指向 uVersion 成員,lpdata,以指出您想要 Windows 2000、Windows Vista 或 5.0 版前版本 5.0 (Windows 95) 行為。
注意 上述訊息不是傳統的 Windows 訊息。 這些訊息會以應用程式定義訊息的 lParam 值的形式傳送,該值是在 uCallbackMessage NOTIFYICONDATA 結構中指定,lpdata所指向,當呼叫 Shell_NotifyIcon 時,會以 dwMessage中所設定的 NIM_ADD 旗標來呼叫 時。
 
從 Windows XP Service Pack 2 (SP2) 開始,自定義圖示可以顯示在通知氣球中。 這可讓呼叫程式自定義超出先前可用資訊、警告和錯誤選項的通知,並區分它與使用者其他類型的通知。

注意

shellapi.h 標頭會將 Shell_NotifyIcon定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 shellapi.h
連結庫 Shell32.lib
DLL Shell32.dll 版(4.0 版或更新版本)
API 集 ext-ms-win-shell-shell32-l1-2-1 (在 Windows 10 版本 10.0.10240 中引進)

另請參閱

通知和通知區域