SHChangeNotifyRegister 関数 (shlobj_core.h)
ファイル システムが通知をサポートしている場合は、ファイル システムまたはシェルから通知を受信するウィンドウを登録します。
構文
ULONG SHChangeNotifyRegister(
[in] HWND hwnd,
int fSources,
LONG fEvents,
UINT wMsg,
int cEntries,
[in] const SHChangeNotifyEntry *pshcne
);
パラメーター
[in] hwnd
型: HWND
変更メッセージまたは通知メッセージを受信するウィンドウへのハンドル。
fSources
型: int
通知を受信するイベントの種類を示す 1 つ以上の次の値。
SHCNRF_InterruptLevel (0x0001)
ファイル システムからの割り込みレベルの通知。
SHCNRF_ShellLevel (0x0002)
シェルからのシェル レベルの通知。
SHCNRF_RecursiveInterrupt (0x1000)
サブツリー全体の割り込みイベント。 このフラグは 、SHCNRF_InterruptLevel フラグと組み合わせる必要があります。 このフラグを使用する場合は、pshcne によって参照される対応する SHChangeNotifyEntry 構造体の fRecursive メンバーを TRUE に設定して、通知を再帰的にする必要もあります。 1 つのレベル ビュー (たとえば、相対で 1 つの SHITEMID のみを含む PIDL) でSHCNRF_RecursiveInterruptを使用すると、最高レベルでイベント通知がブロックされ、再帰的な子更新が防止されます。 したがって、フォルダー階層の最下位レベルにドラッグされたアイコンが、期待どおりにビューに表示されない場合があります。
SHCNRF_NewDelivery (0x8000)
受信したメッセージは共有メモリを使用します。 SHChangeNotification_Lockを呼び出して、実際のデータにアクセスします。 SHChangeNotification_Unlockを呼び出して、完了したらメモリを解放します。
fEvents
型: LONG
通知を受信する通知イベントを変更します。 使用可能な値については、 SHChangeNotify に記載されている SHCNE フラグを参照してください。
wMsg
型: UINT
ウィンドウ プロシージャに投稿するメッセージ。
cEntries
型: int
pshcne 配列内のエントリの数。
[in] pshcne
型: const SHChangeNotifyEntry*
通知を含む SHChangeNotifyEntry 構造体の配列。 SHChangeNotifyRegister を呼び出すとき、または SHChangeNotifyDeregister が正しく機能しない場合は、この配列を常に 1 に設定する必要があります。
戻り値
種類: ULONG
正の整数登録 ID を返します。 メモリ不足の場合、または無効なパラメーターに応答して 0 を返します。
解説
この関数の使用方法を示す完全な例については、Windows ソフトウェア開発キット (SDK) の Change Notify Watcher サンプル を参照してください。
変更通知イベントが発生すると、 wMsg によって示されるメッセージは 、hwnd パラメーターで指定されたウィンドウに配信されます。
- SHCNRF_NewDeliveryを指定した場合、メッセージ内の wParam と lParam の値をそれぞれ hChange パラメーターと dwProcID パラメーターとしてSHChangeNotification_Lockに渡す必要があります。
- SHCNRF_NewDeliveryが指定されていない場合、 wParam は 2 つのPIDLIST_ABSOLUTE ポインターへのポインターであり、 lParam は イベントを指定します。 送信されるイベントに応じて、2 つのPIDLIST_ABSOLUTE ポインターを NULL にすることができます。
パフォーマンス上の理由から、複数の通知を 1 つの通知に組み合わせることができます。 たとえば、同じフォルダー内のファイルに対して多数の SHCNE_UPDATEITEM 通知が生成された場合は、1 つの SHCNE_UPDATEDIR 通知に参加させることができます。
Windows Vista の時点で使用できなくなった NTSHChangeNotifyRegister 関数は、SHCNRF_NewDelivery フラグを持つ SHChangeNotifyRegister と同等でした。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | shlobj_core.h (Shlobj.h を含む) |
Library | Shell32.lib |
[DLL] | Shell32.dll (バージョン 5.0 以降) |
API セット | ext-ms-win-shell-shell32-l1-2-1 (Windows 10 バージョン 10.0.10240 で導入) |