0


0

すべてのWindowsエクスプローラーインスタンスにボタンを追加するにはどうすればよいですか?

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

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

Windowsエクスプローラーへ。

私の質問は:

  1. それが正しい方法ですか?

  2. BHOのSetSiteで、エクスプローラーであるcomObjectを取得します 窓。 今何?

  3. エクスプローラーウィンドウのhWndを取得できる場合、win APIを使用して追加できます 私のボタン?

注:XPのC#で開発しています。

ありがとう。

1 Answer


1


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

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