SHChangeNotifyRegisterで、ファイルシステムやシェルから通知を受けられる。
SHChangeNotifyRegister 関数 (shlobj_core.h) - Win32 apps | Microsoft Learn
C#でリムーバブルメディアの着脱を検知する方法 その2 - ohyajapanの日記
SHCNR.cppで、
独自のメッセージWM_SHNOTIFYを定義。
WM_CREATEで、SHChangeNotifyRegisterで、メディアの挿入と取り出しを監視するシェル通知登録で、ulNotificationIdを取得。
WM_DESTROYで、ulNotificationIdがあれば、SHChangeNotifyDeregisterで解除。
WM_SHNOTIFYに来れば、OutputDebugStringで、"WM_SHNOTIFY"と出力。
![起動時の通知IDは1](https://cdn-ak.f.st-hatena.com/images/fotolife/B/BG1/20230607/20230607132055.png)
起動時の通知IDは1。
![SDカードリーダにSDカードメディアを挿したら、通知WM_SHNOTIFYが来た。](https://cdn-ak.f.st-hatena.com/images/fotolife/B/BG1/20230607/20230607132139.png)
SDカードリーダにSDカードメディアを挿したら、通知WM_SHNOTIFYが来た。
Sample/winapi/SHChangeNotifyRegister/SHCNR/src/SHCNR at master · bg1bgst333/Sample · GitHub