SHChangeNotify 函式 (shlobj_core.h)

通知系統應用程式已執行的事件。 如果應用程式執行可能會影響殼層的動作,則應用程式應該使用此函式。

語法

void SHChangeNotify(
                 LONG    wEventId,
                 UINT    uFlags,
  [in, optional] LPCVOID dwItem1,
  [in, optional] LPCVOID dwItem2
);

參數

wEventId

類型: LONG

描述已發生的事件。 一般而言,一次只指定一個事件。 如果指定多個事件,則所有指定事件中 dwItem1dwItem2 參數中包含的值必須分別相同。 此參數可以是下列一或多個值:

SHCNE_ALLEVENTS

所有事件都已發生。

SHCNE_ASSOCCHANGED

檔類型關聯已變更。 SHCNF_IDLIST 必須在 uFlags 參數中指定。 dwItem1dwItem2 不會使用,而且必須是 NULL。 此事件也應該針對已註冊的通訊協定傳送。

SHCNE_ATTRIBUTES

項目或資料夾的屬性已變更。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已變更的項目或資料夾。 dwItem2 未使用,而且應該是 NULL

SHCNE_CREATE

已建立非資料夾專案。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已建立的專案。 dwItem2 未使用,而且應該是 NULL

SHCNE_DELETE

已刪除非資料夾專案。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已刪除的專案。 dwItem2 未使用,而且應該是 NULL

SHCNE_DRIVEADD

已新增磁碟驅動器。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已新增之磁碟驅動器的根目錄。 dwItem2 未使用,而且應該是 NULL

SHCNE_DRIVEADDGUI

Windows XP 和更新版本:未使用。

SHCNE_DRIVEREMOVED

已移除磁碟驅動器。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已移除之磁碟驅動器的根目錄。 dwItem2 未使用,而且應該是 NULL

SHCNE_EXTENDED_EVENT

目前無法使用。

SHCNE_FREESPACE

磁碟驅動器上的可用空間量已變更。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含可用空間變更所在的磁碟驅動器根目錄。 dwItem2 未使用,而且應該是 NULL

SHCNE_MEDIAINSERTED

儲存媒體已插入磁碟驅動器。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含包含新媒體之磁碟驅動器的根目錄。 dwItem2 未使用,而且應該是 NULL

SHCNE_MEDIAREMOVED

儲存媒體已從磁碟驅動器中移除。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含從中移除媒體的磁碟驅動器根目錄。 dwItem2 未使用,而且應該是 NULL

SHCNE_MKDIR

已建立資料夾。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已建立的資料夾。 dwItem2 未使用,而且應該是 NULL

SHCNE_NETSHARE

本機電腦上的資料夾正透過網路共用。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含正在共享的資料夾。 dwItem2 未使用,而且應該是 NULL

SHCNE_NETUNSHARE

本機電腦上的資料夾不再透過網路共用。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含不再共享的資料夾。 dwItem2 未使用,而且應該是 NULL

SHCNE_RENAMEFOLDER

資料夾的名稱已變更。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含先前的 PIDL 或資料夾名稱。 dwItem2 包含新的 PIDL 或資料夾名稱。

SHCNE_RENAMEITEM

非資料夾項目的名稱已變更。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含先前的 PIDL 或項目名稱。 dwItem2 包含專案的新 PIDL 或名稱。

SHCNE_RMDIR

已移除資料夾。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已移除的資料夾。 dwItem2 未使用,而且應該是 NULL

SHCNE_SERVERDISCONNECT

計算機已與伺服器中斷連線。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含計算機中斷連線的伺服器。 dwItem2 未使用,而且應該是 NULL

SHCNE_UPDATEDIR

現有資料夾的內容已變更,但資料夾仍然存在且尚未重新命名。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已變更的資料夾。 dwItem2 未使用,而且應該是 NULL。 如果已建立、刪除或重新命名資料夾,請分別使用 SHCNE_MKDIRSHCNE_RMDIRSHCNE_RENAMEFOLDER

SHCNE_UPDATEIMAGE

系統映射清單中的映像已變更。 SHCNF_DWORD 必須在 uFlags 中指定。

dwItem2 包含已變更之系統映射清單中的索引。 dwItem1 未使用,且應該是 NULL

SHCNE_UPDATEITEM

現有專案 (資料夾或非資料夾) 已變更,但專案仍然存在且尚未重新命名。 SHCNF_IDLISTSHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已變更的專案。 dwItem2 未使用,而且應該是 NULL。 如果已建立、刪除或重新命名非資料夾專案,請分別使用 SHCNE_CREATESHCNE_DELETESHCNE_RENAMEITEM

SHCNE_DISKEVENTS

指定所有磁碟事件識別碼的組合。

SHCNE_GLOBALEVENTS

指定所有全域事件標識碼的組合。

SHCNE_INTERRUPT

因為系統中斷而發生指定的事件。 當此值修改其他事件值時,它不能單獨使用。

uFlags

類型: UINT

當位與 SHCNF_TYPE 結合時,旗標表示 dwItem1 和 dwItem2 參數的意義。 uFlags 參數必須是下列其中一個值。

SHCNF_DWORD

dwItem1dwItem2 參數是 DWORD 值。

SHCNF_IDLIST

dwItem1dwItem2ITEMIDLIST 結構的位址,代表受變更影響的專案 () 。 每個 ITEMIDLIST 都必須相對於桌面資料夾。

SHCNF_PATH

dwItem1dwItem2 是長度上限的 null 終止字串位址 ,MAX_PATH 包含受變更影響之專案的完整路徑名稱。

SHCNF_PRINTER

dwItem1dwItem2 是 null 終止字串的位址,代表受變更影響的列印機易記名稱 (s) 。

SHCNF_FLUSH

函式不應該在通知傳遞至所有受影響的元件之前傳回。 由於此旗標會修改其他數據類型旗標,因此無法單獨使用。

SHCNF_FLUSHNOWAIT

函式應該會開始將通知傳遞至所有受影響的元件,但應該在通知程序開始時立即傳回。 當這個旗標修改其他數據類型旗標時,它本身就無法使用。 此旗標包含 SHCNF_FLUSH

SHCNF_NOTIFYRECURSIVE

通知註冊所有子系的用戶端。

[in, optional] dwItem1

類型: LPCVOID

選擇性。 第一個事件相依值。

[in, optional] dwItem2

類型: LPCVOID

選擇性。 第二個事件相依值。

傳回值

備註

註冊任何類型新處理程式的應用程式必須使用 SHCNE_ASSOCCHANGED 旗標呼叫SHChangeNotify,以指示殼層使圖示和縮圖快取失效。 這也會載入已註冊的新圖示和縮圖處理程式。 不過請注意,不會重載圖示重疊處理程式。

dwItem1dwItem2 所指向的字串可以是 ANSI 或 Unicode。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 shlobj_core.h (包含 Shlobj.h)
程式庫 Shell32.lib
Dll Shell32.dll (4.0 版或更新版本)
API 集合 ext-ms-win-shell32-l1-2-0 (於 Windows 8.1)