SHChangeNotify 函式 (shlobj_core.h)
通知系統應用程式已執行的事件。 如果應用程式執行可能會影響殼層的動作,則應用程式應該使用此函式。
語法
void SHChangeNotify(
LONG wEventId,
UINT uFlags,
[in, optional] LPCVOID dwItem1,
[in, optional] LPCVOID dwItem2
);
參數
wEventId
類型: LONG
描述已發生的事件。 一般而言,一次只指定一個事件。 如果指定多個事件,則所有指定事件中 dwItem1 和 dwItem2 參數中包含的值必須分別相同。 此參數可以是下列一或多個值:
SHCNE_ALLEVENTS
所有事件都已發生。
SHCNE_ASSOCCHANGED
檔類型關聯已變更。 SHCNF_IDLIST 必須在 uFlags 參數中指定。 dwItem1 和 dwItem2 不會使用,而且必須是 NULL。 此事件也應該針對已註冊的通訊協定傳送。
SHCNE_ATTRIBUTES
項目或資料夾的屬性已變更。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已變更的項目或資料夾。 dwItem2 未使用,而且應該是 NULL。
SHCNE_CREATE
已建立非資料夾專案。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已建立的專案。 dwItem2 未使用,而且應該是 NULL。
SHCNE_DELETE
已刪除非資料夾專案。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已刪除的專案。 dwItem2 未使用,而且應該是 NULL。
SHCNE_DRIVEADD
已新增磁碟驅動器。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已新增之磁碟驅動器的根目錄。 dwItem2 未使用,而且應該是 NULL。
SHCNE_DRIVEADDGUI
Windows XP 和更新版本:未使用。
SHCNE_DRIVEREMOVED
已移除磁碟驅動器。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已移除之磁碟驅動器的根目錄。 dwItem2 未使用,而且應該是 NULL。
SHCNE_EXTENDED_EVENT
目前無法使用。
SHCNE_FREESPACE
磁碟驅動器上的可用空間量已變更。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含可用空間變更所在的磁碟驅動器根目錄。 dwItem2 未使用,而且應該是 NULL。
SHCNE_MEDIAINSERTED
儲存媒體已插入磁碟驅動器。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含包含新媒體之磁碟驅動器的根目錄。 dwItem2 未使用,而且應該是 NULL。
SHCNE_MEDIAREMOVED
儲存媒體已從磁碟驅動器中移除。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含從中移除媒體的磁碟驅動器根目錄。 dwItem2 未使用,而且應該是 NULL。
SHCNE_MKDIR
已建立資料夾。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已建立的資料夾。 dwItem2 未使用,而且應該是 NULL。
SHCNE_NETSHARE
本機電腦上的資料夾正透過網路共用。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含正在共享的資料夾。 dwItem2 未使用,而且應該是 NULL。
SHCNE_NETUNSHARE
本機電腦上的資料夾不再透過網路共用。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含不再共享的資料夾。 dwItem2 未使用,而且應該是 NULL。
SHCNE_RENAMEFOLDER
資料夾的名稱已變更。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含先前的 PIDL 或資料夾名稱。 dwItem2 包含新的 PIDL 或資料夾名稱。
SHCNE_RENAMEITEM
非資料夾項目的名稱已變更。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含先前的 PIDL 或項目名稱。 dwItem2 包含專案的新 PIDL 或名稱。
SHCNE_RMDIR
已移除資料夾。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已移除的資料夾。 dwItem2 未使用,而且應該是 NULL。
SHCNE_SERVERDISCONNECT
計算機已與伺服器中斷連線。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含計算機中斷連線的伺服器。 dwItem2 未使用,而且應該是 NULL。
SHCNE_UPDATEDIR
現有資料夾的內容已變更,但資料夾仍然存在且尚未重新命名。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已變更的資料夾。 dwItem2 未使用,而且應該是 NULL。 如果已建立、刪除或重新命名資料夾,請分別使用 SHCNE_MKDIR、 SHCNE_RMDIR或 SHCNE_RENAMEFOLDER。
SHCNE_UPDATEIMAGE
系統映射清單中的映像已變更。 SHCNF_DWORD 必須在 uFlags 中指定。
dwItem2 包含已變更之系統映射清單中的索引。 dwItem1 未使用,且應該是 NULL。
SHCNE_UPDATEITEM
現有專案 (資料夾或非資料夾) 已變更,但專案仍然存在且尚未重新命名。 SHCNF_IDLIST 或 SHCNF_PATH 必須在 uFlags 中指定。 dwItem1 包含已變更的專案。 dwItem2 未使用,而且應該是 NULL。 如果已建立、刪除或重新命名非資料夾專案,請分別使用 SHCNE_CREATE、 SHCNE_DELETE或 SHCNE_RENAMEITEM。
SHCNE_DISKEVENTS
指定所有磁碟事件識別碼的組合。
SHCNE_GLOBALEVENTS
指定所有全域事件標識碼的組合。
SHCNE_INTERRUPT
因為系統中斷而發生指定的事件。 當此值修改其他事件值時,它不能單獨使用。
uFlags
類型: UINT
當位與 SHCNF_TYPE 結合時,旗標表示 dwItem1 和 dwItem2 參數的意義。 uFlags 參數必須是下列其中一個值。
SHCNF_DWORD
dwItem1 和 dwItem2 參數是 DWORD 值。
SHCNF_IDLIST
dwItem1 和 dwItem2 是 ITEMIDLIST 結構的位址,代表受變更影響的專案 () 。 每個 ITEMIDLIST 都必須相對於桌面資料夾。
SHCNF_PATH
dwItem1 和 dwItem2 是長度上限的 null 終止字串位址 ,MAX_PATH 包含受變更影響之專案的完整路徑名稱。
SHCNF_PRINTER
dwItem1 和 dwItem2 是 null 終止字串的位址,代表受變更影響的列印機易記名稱 (s) 。
SHCNF_FLUSH
函式不應該在通知傳遞至所有受影響的元件之前傳回。 由於此旗標會修改其他數據類型旗標,因此無法單獨使用。
SHCNF_FLUSHNOWAIT
函式應該會開始將通知傳遞至所有受影響的元件,但應該在通知程序開始時立即傳回。 當這個旗標修改其他數據類型旗標時,它本身就無法使用。 此旗標包含 SHCNF_FLUSH。
SHCNF_NOTIFYRECURSIVE
通知註冊所有子系的用戶端。
[in, optional] dwItem1
類型: LPCVOID
選擇性。 第一個事件相依值。
[in, optional] dwItem2
類型: LPCVOID
選擇性。 第二個事件相依值。
傳回值
無
備註
註冊任何類型新處理程式的應用程式必須使用 SHCNE_ASSOCCHANGED 旗標呼叫SHChangeNotify,以指示殼層使圖示和縮圖快取失效。 這也會載入已註冊的新圖示和縮圖處理程式。 不過請注意,不會重載圖示重疊處理程式。
dwItem1 和 dwItem2 所指向的字串可以是 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) |