3

OFNHookProcWindows 7 で共通コントロール ダイアログをインストルメント化するために実装してGetOpenFileName()います。インストルメンテーションは C++ で記述されています。ユーザーがライブラリ (ドキュメントや画像など) を選択するまで、問題なく動作します。これが発生すると、CDN_FOLDERCHANGE期待どおりに通知を受け取りCDM_GETFOLDERPATHますが、新しく選択したフォルダーを取得するメッセージをダイアログに送信すると、-1 のエラーが返され、CommDlgExtendedError0 が返されます。ある意味では、これは理にかなっています。フォルダーではありませんが、他のメッセージはどれも機能していないようです (CDM_GETFOLDERIDLISTまたは などCDM_GETFILEPATH)。

OFNHookProcでは、現在選択されているアイテムまたはフォルダーがライブラリであることを からどのように判断しますか? それがライブラリであることがわかったら、どのファイル システム フォルダがライブラリを構成しているかを把握できるように、ライブラリへのインターフェイスをどのように取得しますIShellItemか?IShellLibrary

(ダイアログを作成するコードはレガシ コードであるため、Windows 7 で推奨されているライブラリを適切な方法でサポートするインターフェイスにGetOpenFileName置き換えることはできません)。IFileOpenDialog

4

0 に答える 0