IShellChangeNotify
COM公式ドキュメント
アイテムの ID が変更されたことをシェル名前空間拡張機能に通知するメソッドを公開します。
解説(Remarks)
IShellChangeNotify は、コンポーネントのホストが受け取った変更通知を、そのホストが管理するオブジェクトに伝達するために使用されます。これは Windows エクスプローラーにおいて、バンドオブジェクトへ変更通知を伝達するために使用されます。
このインターフェイスは、すべての名前空間拡張機能によって実装されます。
このインターフェイスを直接呼び出すことはありません。IShellChangeNotify は、アプリケーションがこのインターフェイスを認識していることをオペレーティングシステムが確認した場合にのみ、システムによって使用されます。
IShellChangeNotify は、記載されているメソッドに加えて IUnknown を実装します。
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
名前空間拡張機能に対して、そのアイテムに影響するイベントが発生したことを通知します。
| lEvent | INT | in | 発生したイベントを表す値です。通常、一度に指定されるイベントは 1 つだけです。複数のイベントを指定する場合、指定するすべてのイベントについて、pidl1 パラメーターおよび pidl2 パラメーターに含まれる値がそれぞれ同一である必要があります。lEvent パラメーターには、次のフラグを 1 つ以上含めることができます。 SHCNE_ALLEVENTS (0x7FFFFFFFL)すべてのイベントが発生しました。 SHCNE_ASSOCCHANGED (0x08000000L)ファイルタイプの関連付けが変更されました。pidl1 および pidl2 パラメーターは使用されず、NULL でなければなりません。 SHCNE_ATTRIBUTES (0x00000800L)アイテムまたはフォルダーの属性が変更されました。pidl1 パラメーターには、変更されたアイテムまたはフォルダーが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_CREATE (0x00000002L)フォルダー以外のアイテムが作成されました。pidl1 パラメーターには、作成されたアイテムが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_DELETE (0x00000004L)フォルダー以外のアイテムが削除されました。pidl1 パラメーターには、削除されたアイテムが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_DRIVEADD (0x00000100L)ドライブが追加されました。pidl1 パラメーターには、追加されたドライブのルートが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_DRIVEADDGUI (0x00010000L)Windows XP 以降: 使用されません。 SHCNE_DRIVEREMOVED (0x00000080L)ドライブが削除されました。pidl1 パラメーターには、削除されたドライブのルートが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_FREESPACE (0x00040000L)ドライブの空き容量が変化しました。pidl1 パラメーターには、空き容量が変化したドライブのルートが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_MEDIAINSERTED (0x00000020L)記憶メディアがドライブに挿入されました。pidl1 パラメーターには、新しいメディアを含むドライブのルートが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_MEDIAREMOVED (0x00000040L)記憶メディアがドライブから取り出されました。pidl1 パラメーターには、メディアが取り出されたドライブのルートが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_MKDIR (0x00000008L)フォルダーが作成されました。pidl1 パラメーターには、作成されたフォルダーが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_NETSHARE (0x00000200L)ローカルコンピューター上のフォルダーがネットワークを通じて共有されています。pidl1 パラメーターには、共有されているフォルダーが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_NETUNSHARE (0x00000400L)ローカルコンピューター上のフォルダーがネットワークを通じて共有されなくなりました。pidl1 パラメーターには、共有されなくなったフォルダーが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_RENAMEFOLDER (0x00020000L)フォルダーの名前が変更されました。pidl1 パラメーターには、変更前のフォルダーの PIDL または名前が含まれます。pidl2 パラメーターには、変更後のフォルダーの PIDL または名前が含まれます。 SHCNE_RENAMEITEM (0x00000001L)フォルダー以外のアイテムの名前が変更されました。pidl1 パラメーターには、変更前のアイテムの PIDL または名前が含まれます。pidl2 パラメーターには、変更後のアイテムの PIDL または名前が含まれます。 SHCNE_RMDIR (0x00000010L)フォルダーが削除されました。pidl1 パラメーターには、削除されたフォルダーが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_SERVERDISCONNECT (0x00004000L)コンピューターがサーバーから切断されました。pidl1 パラメーターには、コンピューターが切断されたサーバーが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。 SHCNE_UPDATEDIR (0x00001000L)既存のフォルダーの内容が変更されましたが、フォルダー自体は依然として存在し、名前も変更されていません。pidl1 パラメーターには、変更されたフォルダーが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。フォルダーが作成、削除、または名前変更された場合は、代わりにそれぞれ SHCNE_MKDIR、SHCNE_RMDIR、または SHCNE_RENAMEFOLDER を使用してください。 SHCNE_UPDATEIMAGE (0x00008000L)システムイメージリスト内のイメージが変更されました。pidl2 パラメーターには、変更されたシステムイメージリスト内のインデックスが含まれます。 SHCNE_UPDATEITEM (0x00002000L)既存のアイテム(フォルダーまたはフォルダー以外)が変更されましたが、アイテム自体は依然として存在し、名前も変更されていません。pidl1 パラメーターには、変更されたアイテムが含まれます。pidl2 パラメーターは使用されず、NULL にする必要があります。フォルダー以外のアイテムが作成、削除、または名前変更された場合は、代わりにそれぞれ SHCNE_CREATE、SHCNE_DELETE、または SHCNE_RENAMEITEM を使用してください。 次の値は、その他のイベントの組み合わせを指定します。 SHCNE_DISKEVENTS (0x0002381FL)すべてのディスクイベント識別子の組み合わせを指定します。 SHCNE_GLOBALEVENTS (0x0C0581E0L)すべてのグローバルイベント識別子の組み合わせを指定します。 次の値は、その他のイベント値を修飾するものであり、単独では使用できません。 SHCNE_INTERRUPT (0x80000000L)指定されたイベントは、システム割り込みの結果として発生しました。 |
| pidl1 | ITEMIDLIST* | inoptional | 1 つ目のイベント依存アイテム識別子です。 |
| pidl2 | ITEMIDLIST* | inoptional | 2 つ目のイベント依存アイテム識別子です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT のエラーコードを返します。
解説(Remarks)
このメソッドは、機能および使用方法において SHChangeNotify と類似しています。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IShellChangeNotify "{D82BE2B1-5764-11D0-A96E-00C04FD705A2}" #usecom global IShellChangeNotify IID_IShellChangeNotify "{}" #comfunc global IShellChangeNotify_OnChange 3 int,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IShellChangeNotify "{D82BE2B1-5764-11D0-A96E-00C04FD705A2}" #usecom global IShellChangeNotify IID_IShellChangeNotify "{}" #comfunc global IShellChangeNotify_OnChange 3 int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。