SHChangeNotify 関数 (shlobj_core.h)
アプリケーションが実行したイベントをシステムに通知します。 アプリケーションがシェルに影響を与える可能性のあるアクションを実行する場合は、この関数を使用する必要があります。
構文
void SHChangeNotify(
LONG wEventId,
UINT uFlags,
[in, optional] LPCVOID dwItem1,
[in, optional] LPCVOID dwItem2
);
パラメーター
wEventId
型: LONG
発生したイベントについて説明します。 通常、一度に指定されるイベントは 1 つだけです。 複数のイベントが指定されている場合、 dwItem1 パラメーターと dwItem2 パラメーターに含まれる値は、指定されたすべてのイベントでそれぞれ同じである必要があります。 このパラメーターには、次の値のうち 1 つ以上を指定できます。
SHCNE_ALLEVENTS
すべてのイベントが発生しました。
SHCNE_ASSOCCHANGED
ファイルの種類の関連付けが変更されました。 SHCNF_IDLISTuFlags パラメーターで指定する必要があります。 dwItem1 と dwItem2 は使用されず、 NULL である必要があります。 このイベントは、登録済みのプロトコルにも送信する必要があります。
SHCNE_ATTRIBUTES
アイテムまたはフォルダーの属性が変更されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、変更されたアイテムまたはフォルダーが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_CREATE
フォルダー以外のアイテムが作成されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、作成された項目が含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_DELETE
フォルダー以外のアイテムが削除されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、削除されたアイテムが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_DRIVEADD
ドライブが追加されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、追加されたドライブのルートが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_DRIVEADDGUI
Windows XP 以降: 使用されていません。
SHCNE_DRIVEREMOVED
ドライブが削除されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、削除されたドライブのルートが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_EXTENDED_EVENT
現在は使用しません。
SHCNE_FREESPACE
ドライブの空き領域の量が変更されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、空き領域が変更されたドライブのルートが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_MEDIAINSERTED
記憶域メディアがドライブに挿入されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、新しいメディアを含むドライブのルートが含まれます。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_MEDIAREMOVED
ストレージ メディアがドライブから削除されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、メディアが削除されたドライブのルートが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_MKDIR
フォルダーが作成されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、作成されたフォルダーが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_NETSHARE
ローカル コンピューター上のフォルダーがネットワーク経由で共有されています。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、共有されているフォルダーが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_NETUNSHARE
ローカル コンピューター上のフォルダーがネットワーク経由で共有されなくなりました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、共有されなくなったフォルダーが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_RENAMEFOLDER
フォルダーの名前が変更されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、以前の PIDL またはフォルダーの名前が含まれています。 dwItem2 には、フォルダーの新しい PIDL または名前が含まれています。
SHCNE_RENAMEITEM
フォルダー以外のアイテムの名前が変更されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、項目の以前の PIDL または名前が含まれています。 dwItem2 には、項目の新しい PIDL または名前が含まれています。
SHCNE_RMDIR
フォルダーが削除されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、削除されたフォルダーが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_SERVERDISCONNECT
コンピューターがサーバーから切断されました。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、コンピューターが切断されたサーバーが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。
SHCNE_UPDATEDIR
既存のフォルダーの内容は変更されましたが、フォルダーは引き続き存在し、名前は変更されていません。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 dwItem1 には、変更されたフォルダーが含まれています。 dwItem2 は使用されず、 NULL にする必要があります。 フォルダーが作成、削除、または名前変更された場合は、それぞれ SHCNE_MKDIR、 SHCNE_RMDIR、または SHCNE_RENAMEFOLDERを使用します。
SHCNE_UPDATEIMAGE
システム・イメージ・リスト内のイメージが変更されました。 SHCNF_DWORD は uFlags で指定する必要があります。
dwItem2 には、変更されたシステム イメージ リスト内のインデックスが含まれています。 dwItem1 は使用されず、 NULL にする必要があります。
SHCNE_UPDATEITEM
既存のアイテム (フォルダーまたはフォルダー以外のアイテム) は変更されましたが、アイテムは引き続き存在し、名前は変更されていません。 uFlags では、SHCNF_IDLISTまたはSHCNF_PATHを指定する必要があります。 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 は、変更の影響を受けるアイテムの完全なパス名を含む最大長 MAX_PATH の null で終わる文字列のアドレスです。
SHCNF_PRINTER
dwItem1 と dwItem2 は、変更の影響を受けるプリンターのフレンドリ名を表す null で終わる文字列のアドレスです。
SHCNF_FLUSH
関数は、影響を受けるすべてのコンポーネントに通知が配信されるまで、戻らないようにする必要があります。 このフラグは他のデータ型フラグを変更しますが、それ自体では使用できません。
SHCNF_FLUSHNOWAIT
関数は、影響を受けるすべてのコンポーネントに通知を配信し始める必要がありますが、通知プロセスが開始されるとすぐに を返す必要があります。 このフラグは他のデータ型フラグを変更しますが、それ自体では使用できません。 このフラグには 、SHCNF_FLUSHが含まれます。
SHCNF_NOTIFYRECURSIVE
すべての子に登録されているクライアントに通知します。
[in, optional] dwItem1
種類: LPCVOID
省略可能。 最初のイベント依存値。
[in, optional] dwItem2
種類: LPCVOID
省略可能。 2 番目のイベント依存値。
戻り値
なし
解説
任意の型の新しいハンドラーを登録するアプリケーションは、アイコンとサムネイル キャッシュを無効にするようにシェルに指示するために、SHCNE_ASSOCCHANGED フラグで SHChangeNotify を呼び出す必要があります。 これにより、登録されている新しいアイコンとサムネイル ハンドラーも読み込まれます。 ただし、アイコン オーバーレイ ハンドラーは再読み込みされないことに注意してください。
dwItem1 および dwItem2 によって指される文字列は、ANSI または Unicode のいずれかになります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | shlobj_core.h (Shlobj.h を含む) |
Library | Shell32.lib |
[DLL] | Shell32.dll (バージョン 4.0 以降) |
API セット | ext-ms-win-shell-shell32-l1-2-0 (Windows 8.1で導入) |