私はATL(Visual Studio 2008)を使ってWindowsシェルエクステンションを作成しました。それは以下のモジュールを持ち、各モジュールは登録のためのそれ自身の.rgsファイルを持つ別々のATL Simple Objectです: -
- IShellFolder / IShellView - > Windowsエクスプローラの仮想ドライブ用
- IContextMenu / IShellExtInit - >ポップアップメニューのファイルとフォルダ用
- IShellIconOverlayIdentifier - ファイルとフォルダにオーバーレイアイコンを表示する
- IShellPropSheetExt / IShellExtInit - >ファイルとフォルダのプロパティのカスタムプロパティページの場合
上記の動作はWinXPでも問題なく動作します。WinXPでこのシェルエクステンションをデバッグします。しかし、Vistaに切り替えるとすぐに、(2)と(4)のメソッド呼び出ししか得られません。ドライブはWindowsエクスプローラで作成されますが、基になるメソッドはクリックしても呼び出されません。 右クリックすると(2)が呼び出され、ファイルやフォルダに[プロパティ]を選択すると(4)のコードが表示されます。
私が欠けているいくつかのインターフェースはありますか(1)(3)Vistaの場合私はMSDNでVista用のシェル拡張を書くことに関する完全で詳細な文書を見つけることができませんでした。私はすでにシェルエクステンションに関するCodeProjectの記事を読みました。
回答:
回答№1は1問題はXml SMART Pointerの使用によるものでした。 Release()が呼び出されたときに問題がありました。
このリンクをチェック MSXML2 :: IXMLDOMDocumentPtr - > Release()が呼び出されると、Internet Explorerがクラッシュします。
回答№2の場合は0
あなたの拡張機能が正しく初期化しないと、verclsid.exeによって拡張機能が読み込まれませんでした。 verclsid.exeは最初にシェル拡張をロードし、シェルに「ok」を送信してから拡張をロードしても安全であることを示す前に、シェル拡張を迅速にチェックします。
見る ここに verclsid.exeに関する詳細については、。