スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 

IContextMenuにIShellBrowserを関連付ける

カスペルスキー対策でコンテキストメニューを調べている時にEternalWindowsを読んでいたら、IContextMenuにIShellBrowserを関連付ける方法が載ってました。

今までのTablacus Explorerでは右クリックから「名前の変更」が選ばれた場合は、Tablacus Explorer側で名前の変更を呼び出すようにしていたのですが、IContextMenuにIShellBrowserを関連付ければ自動的に名前の変更が行われるようになりました。

フォルダなどの新規作成も◎

参考にしたのは

EternalWindows / シェル拡張 / UIオブジェクトの実装

IObjectWithSite::SetSiteということなのでTablacus Explorerでは、IContextMenuにIUnknown_SetSiteでIShellBrowserに関連したIServiceProviderを渡しています。

IServiceProviderのQueryServiceが呼ばれた際は、IShellViewのQueryInterfaceで取得した値を渡せばOKでした。

Tablacus ExplorerではIServiceProviderをIExplorerBrowserのフィルターでも使っているのですが、こちらはIShellViewのQueryInterfaceで取得した値を渡すとIExplorerBrowserの動作にいろいろと不具合が出るので、IExplorerBrowserにIUnknown_SetSiteで渡すIServiceProviderはIShellViewのQueryInterfaceの値を渡さないようにしています。

詳しくはTablacus Exploerのソースをご覧ください。

上記の「名前の変更」の場合にはWindows 7ではIID_IFolderView2がWindows XPではIID_IDefViewFrame3でQueryServiceが呼ばれました。IID_IDefViewFrame3って何だ?

それから、カスペルスキーの方ですが、テクニカルサポートにKaspersky Internet Security 2014のシステム上の問題のシステム遅延という事で問い合わせたら、詳細を確認してくれると解答を頂いています。
スポンサーサイト
 

コメント

コメントの投稿

  • URL
  • コメント内容
  • password
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL: http://gakana.blog34.fc2.com/tb.php/65-f7e15e30
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。