0

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

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

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

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

4

2 に答える 2

1

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

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

于 2009-03-19T05:36:58.280 に答える
0

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

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

于 2009-03-08T17:02:44.927 に答える