タブファイラー開発ブログ

Tablacus ExplorerやX-Finderの作者のブログ

フォルダの監視(Tablacus Explorer)

Tablacus Explorer 14.2.10からシェル関数のSHChangeNotifyRegister関数でフォルダを監視するようにしました。 フォルダ内の更新はエクスプローラ互換のコントロールを使っている関係で自動的にやってくれるので、今回は開いているタブのフォルダ自体が削除されたり、名前が変更された場合に対応できる様に対策しました。 SHChangeNotifyRegisterでデスクトップを指定してfRecursiveをTRUEにすれば、すべてのフォルダやファイルを削除やリネーム等の通知対象にできます。 ただ、更新日時の変更等の細かい通知はこれでは取得できず、その親フォルダをSHChangeNotifyRegisterで指定する必要があります。 また、SHChangeNotifyRegister関数では気を付けなければいけない事があります。 それは、SHCNE_RENAMEITEMやSHCNE_RENAMEFOLDERで取得する名前の変更後のITEMIDLISTが壊れているようでそのままでは使えない事です。 一度、文字列に直してITEMIDLISTに戻すと上手くいきます。 そして、SHChangeNotifyRegisterで指定したフォルダはロックされます。ディスクの取り出しを選んだ時の通知を取る方法があれば良いのだけれど……