4

タスクパネルの前にWindows7のタスクバーにカスタムツールバーを配置するにはどうすればよいですか?それを行うPokkiと呼ばれる人気のあるアプリケーションがあります。 ここに画像の説明を入力してください どうすれば同じことができるのだろうか?

編集1:Windows 7のカスタムツールバー(DeskBand?)への100%の方法が必要です。ピンを探していません。アプリケーションソリューションではなく、独自のメッセージを処理して表示できるカスタムソリューションを構築する方法です。独自のアイコン。C#の方法は大歓迎です。

Edit2:WPFの方法は大歓迎です。

4

2 に答える 2

12

C#でこれを行わないようにするためのアドバイスがたくさんあります。それ以外の方法はお勧めできません。デスクバンドが機能しない可能性は非常に高いです。問題となっているのはCLRバージョンの挿入の問題であり、プロセス(explorer.exeなど)にロードできるCLRのバージョンは1つだけです。また、バージョンが間違っていると、デスクバンドは機能しません。

.NET 4.0で追加されたこの問題に対する非常に具体的な対策があり、そのCLRはインプロセスのサイドバイサイドバージョンのCLRをサポートしています。つまり、1つのプロセスに複数のCLRがロードされます。この機能は、この特定のシナリオ、つまりマネージコードで記述されているためにCLRを必要とするCOMサーバーで機能します。したがって、絶対的な要件は、.NET4.0以降を対象とする拡張機能を作成することです。

しかし、まだレガシーの問題があり、Microsoftがシェル拡張のこのシナリオをまだサポートしていない主な理由があります。「誰が最初に来るか」という問題があります。これを行わないようにという警告にもかかわらず、マネージコードを使用してCLRバージョン2をターゲットとするシェル拡張機能があります。そのような拡張機能が自分のに読み込まれると、レジストリ内のキーの順序に依存するため、完全にランダムなイベントになります。 CLR2が最初にロードされる可能性があります。これにより、インプロセスのサイドバイサイド機能が機能しなくなります。これは、CLRバージョン4が最初にロードされた場合にのみ適切に終了します。

これはまったく診断できません。拡張機能を読み込めない場合、Explorerはきしむ音を鳴らしません。そして、平均的なユーザーには修正できないので、彼があいまいなレジストリキーをいじくり回すことは期待できません。

この問題を完全に解決するには、かなりの時間がかかります。現実的には、Windowsは、保証を受けるために.NET4より前の.NETバージョンのサポートを停止する必要があります。Windows 8は、デフォルトで.NET 3.5がインストールされていないことから始まりましたが、それでも非常に簡単に追加できます。ですから、それを多くの時間、10年以上にしてください。

風に注意してください。ランダムな障害を心配しない場合は、C#で機能させることができます。次に、非常にあいまいなCOMインターフェイスの詳細に埋もれてしまいます。それらを生き残るには、[ComImport]インターフェイスを適切に宣言する方法を知っている黒帯のスキルが必要です。これはあなたが自分で取り組むべきことではなく、他の人によって行われてきました。私は製品を推奨する習慣はありませんが、C#でシェル拡張機能を作成するために特別に設計されたライブラリであるEZShellExtensionsの推奨をスキップすることはできません。デスクバンドのサポートは、その宣伝機能の1つです。試用版を使用してこれをいじって、これをうまく終わらせることができるかどうかを確認してください。

于 2012-12-22T15:55:38.030 に答える
2

次の例が役立つ場合があります。

http://www.codeproject.com/Articles/185512/Programmatically-PIN-shortcut-onto-Taskbar-on-Win7

于 2012-12-15T04:29:16.270 に答える