2011-12-15 14 views
0

私はWindows用のWPFデスクトップアプリケーションを開発しています。これは、独自のファイルタイプを使用します。たとえば、.fooとしましょう。このファイルタイプは、アプリケーションによって変更されたファイルを表します。たとえば、元は.txtでしたが、今は.txt.fooです(または、おそらく私は.txtfooを使用できます)。ファイル拡張子に関連付けられたアイコンを変更することはできますが、置き換えることはできません。

元のアイコンの上に、元のアイコンの上に小さいロックを表示するなど、ソースコントロールシステムと同様の小さなアプリのロゴを表示したいとします。

私はユーザーを混乱させたくないので、私は完全に新しいアイコンを作りたいと思うので、アプリを使う前にすでに知っていたアイコンを見たいと思っています。だから、現状のアイコンの上に小さなロゴを追加したいだけです。

これも可能ですか?

+3

可能です。私は個人的にそれに対してアドバイスをします。これはモーダルダイアログボックスのようなものです。良いアイデアのようですが、地球上のすべての開発者がそれをやろうとした場合、混乱を想像してください。ファイルがあなたのアプリに関連付けられるようになると、あなたのアイコンが表示されます。変更されたメモ帳アイコンや修正されたワードパッドアイコンを表示し、それらのアプリケーションで開くことができないようにすると、***ユーザーの混乱に***が追加されます。 – David

+0

Davidに感謝します。良い点、しかし:あなたの最初の点は問題ではありません。 Im .txtアイコンを修正しようとしていない、.txtfooだけなので、衝突がないと仮定するのが妥当です。 2番目のものについては、実際には、プロセスの後に、最後に元のアプリケーションで開きます:)しかし、とにかく、これは興味深い議論です。あなたはそれをどうやって手伝ってもらえますか? – rgargente

+1

次の操作を行う必要があります。レジストリを読んで、現在使用されているアイコンを確認します。 System.Drawing.Graphicsを使用して開き、変更して新しいアイコンとして保存し、適切なレジストリ設定を作成してファイルの種類をこのアイコンに関連付けます。あなたのアプリにそのようなことをする権利があることを保証する必要があります(お勧めできません)。 Webには、それらのすべてを行う方法を示すコードがあります。完全な解決策は、回答として投稿するのはあまりにも多いでしょう。それで、私は、現実の問題では完全に答えることができないので、「本当の質問ではない」という質問を終わらせることに投票しています。違反はありません... – David

答えて

2

カスタムファイルタイプを使用している場合は、名前を変更するファイルごとに修正されたアイコンが必要です。あなたのインストーラが実行されるときにファイルタイプが多すぎない場合は、.txt.fooではなく.txtfooが1つの解決策になります。新しいファイルタイプをレジストリに登録し、変更したアイコンをインストールするだけです。しかし、それらがたくさんある場合、これは問題になります。 Code Projectに関するGet Registered File Types and Their Associated Icons in C#の記事とC#: Set File Type Associationは、あなたがやろうとしていることのいくつかに役立つかもしれません。

それ以外の場合は、アイコンオーバーレイハンドラを探しているようです。このアプローチでは、ベースの.fooアイコンの上に表示される元のタイプを表すために小さなアイコンオーバーレイのセットが必要になることを意味します。詳細については、MSDNのCreating Icon Overlay Handlersの記事を参照してください。

関連する問題