0

Windows Explorer インスタンスの既存のツールバーの 1 つにボタンを追加しようとしています。

多くの調査の結果、BHO (ブラウザ ヘルパー オブジェクト) が最適なフック方法であることがわかりました。

Windows エクスプローラーに。

私の質問は:

  1. それは正しい方法ですか?
  2. BHO の SetSite で、エクスプローラ ウィンドウである comObject を取得します。今何?
  3. エクスプローラ ウィンドウの hWnd を取得できれば、win API を使用してボタンを追加できますか?

XP用のC#で開発していることに注意してください。

ありがとう。

4

1 に答える 1

1

1 XP 以前では、フォルダ ウィンドウは実際には Web ページであるため、デフォルトのフォルダ テンプレートにカスタム アイテムを追加できます。XP 以降では、これは当てはまりません。Deskband は、UI を拡張する方法としてサポートされています。2 サイトは同じです。DWebBrowserEvents2 をシンクして、フォルダー ビューの準備ができたときに通知を受け取ることもできます。3 エクスプローラーでのウィンドウ機能の使用はサポートされていません。Explorer をカスタマイズするサポートされている方法は、デスクバンドを作成することです。クライアントが使用するすべてのバージョンの Windows Explorer に対してコードをテストし、explorer.exe の新しいバージョン (または新しい言語) がリリースされるたびに互換性テストを継続するためのリソースがあれば、理論的には可能です。

BHO はデスクバンドを追加できません。BHO とデスクバンドのプログラミングを開始したい場合は、MSJ の 1999 年 11 月号の Paul DiLascia の記事「My Band is Your Band」をご覧ください。BHO の MSDN には、別の記事「Visual Studio 2005 を使用したブラウザー ヘルパー オブジェクトの構築」があります。基本的に、DocumentComplete および BeforeNavigate イベントを処理する必要があり、ドキュメントの準備ができていないときにフォルダー ビューにアクセスしないように注意してください。BHO とデスクバンドの間で適切と思われる任意の通信方法を使用できます。たとえば、特別なウィンドウ クラスを使用した隠しウィンドウ、2 つが同じ dll にある場合の静的変数、共有メモリ、名前付きパイプなどです。

Microsoft は、.Net 4.0 までマネージド コードでのインプロセス拡張機能の作成をサポートしていません

于 2009-11-17T03:45:59.270 に答える