質問

ATL(Visual Studio 2008)を使用してWindowsシェル拡張を作成しました。次のモジュールがあり、各モジュールは、登録用の独自の.rgsファイルを持つ個別のATLシンプルオブジェクトです:-

  1. IShellFolder / IShellView-> Windowsエクスプローラーの仮想ドライブの場合
  2. IContextMenu / IShellExtInit->ポップアップメニューのファイルとフォルダーの場合
  3. IShellIconOverlayIdentifier-ファイルおよびフォルダーにオーバーレイアイコンを表示するには
  4. IShellPropSheetExt / IShellExtInit-> File&のカスタムプロパティページの場合フォルダのプロパティ

上記はWinXPで正常に機能し、WinXPでこのシェル拡張をデバッグできます。しかし、Vistaに切り替えるとすぐに、(2)と(4)のメソッド呼び出ししか取得できません。ドライブはエクスプローラーで作成されますが、クリックしても基本的なメソッドは呼び出されません。 右クリックすると(2)が呼び出され、「プロパティ」を選択するとファイルまたはフォルダの場合、(4)のコードに入ります。

Vistaで(1)と(3)に欠けているインターフェイスがあります。 MSDNでVista用のシェル拡張機能を作成するための完全で詳細なドキュメントを見つけることができませんでした。シェル拡張に関するCodeProjectの記事は既に読んでいます。

役に立ちましたか?

解決

問題は、Xml SMART Pointerの使用が原因でした。 Release()が呼び出されたときに問題がありました。

このリンクを確認してください MSXML2 :: IXMLDOMDocumentPtrでInternet Explorerがクラッシュする-> Release()が呼び出されます

他のヒント

拡張機能が初期化を適切に処理していることを確認してください。そうしないと、verclsid.exeは拡張機能のロードを許可しません。 verclsid.exeは最初にシェル拡張をロードし、拡張をロードしても安全であることを示す「ok」をシェルに送信する前に、それらのクイックチェックを行います。

verclsid.exeの詳細については、こちらをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top