.NET TIPS

ファイルに関連付けられたアイコンを取得するには?[2.0のみ、C#、VB]

デジタルアドバンテージ 一色 政彦
2006/04/07

 .NET Framework 1.xでは、ファイルに関連付けられたアプリケーションが持つアイコンを取得するには、「TIPS:実行ファイルからアプリケーションのアイコンを取得するには?」で説明されているようにWin32 APIのSHGetFileInfo関数やWin32 APIのExtractAssociatedIcon関数を呼び出す必要があった。つまり、このような処理は.NET Frameworkのクラス・ライブラリだけでは気軽に実装できなかったのだ。

 しかし.NET Framework 2.0ではファイルに関連付けられたアイコンを取得するためのメソッドが新たに追加されており、非常に簡単にこの処理を実装できるようになっている。具体的には次のメソッドが追加された。

  • Iconクラス(System. Drawing名前空間)の静的なExtractAssociatedIconメソッド

 このメソッドは、パラメータにファイル・パスを文字列で指定して呼び出すと、戻り値としてIconオブジェクトを返す。なお、パラメータにファイル・パス以外の値、例えばフォルダ・パスなどを指定した場合は、当然ながらFileNotFoundException例外(System.IO名前空間)などのエラーが発生する。

 次のサンプル・プログラムは、このIcon.ExtractAssociatedIconメソッドを実際に利用した例である。このプログラムは、[アイコンのビットマップを表示]ボタンをクリックすると、TextBoxコントロール(textBoxPath)に入力されたパスのファイルに関連付けられたアイコンを取得し、PictureBoxコントロール(pictureBox1)上に表示する(具体的な動作内容・操作方法は、以下で示す実行結果の画面を参照してほしい)。なおソース・コード全体は以下の説明欄にあるリンクからダウンロードできる。

private void buttonShow_Click(object sender, EventArgs e)
{
  string path = textBoxPath.Text;
  Icon appIcon =
    System.Drawing.Icon.ExtractAssociatedIcon(path);
  pictureBox1.Image = appIcon.ToBitmap();
}
Private Sub buttonShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonShow.Click
  Dim path As String = textBoxPath.Text
  Dim appIcon As Icon = _
    System.Drawing.Icon.ExtractAssociatedIcon(path)
  pictureBox1.Image = appIcon.ToBitmap()
End Sub
Icon.ExtractAssociatedIconメソッドを実際に利用したサンプル・プログラム(上:C#、下:VB)
ExtractAssociatedIconメソッドの呼び出し部分でIconクラスの前に名前空間(System.Drawing.)を付けたのは、フォーム自体が持つIconプロパティと見分けが付くようにするためだ。
ソース・コード全体のダウンロード(C#版:Form1.cs/VB版:Form1.vb

 また、本稿のサンプル・プログラムでは、TextBoxコントロールへのファイル・パスの入力は[参照]ボタンで[ファイルを開く]ダイアログ(=System.Windows.Forms名前空間のOpenFileDialogクラス)を開き、これを参照しながら指定できるようにしている。この[ファイルを開く]ダイアログの実装方法については、「C#プログラミングTips ― コモン・ダイアログを使う」を参照してほしい。本稿では割愛する。

 以上のサンプル・プログラムを実行したのが次の画面である。

サンプル・プログラムの実行結果
TextBoxコントロール(textBoxPath)にファイル・パスを入力して[アイコンのビットマップを表示]ボタンをクリックすると、そのファイルに関連付けられたアイコンを取得し、PictureBoxコントロール(pictureBox1)上に表示する。なお、[参照]ボタンをクリックすると、TextBoxコントロールに入力するファイルを、[ファイルを開く]ダイアログから参照しながら指定できる。

 上の画面のように、「C:\WINDOWS\system32\notepad.exe」を指定して[アイコンのビットマップを表示]ボタンをクリックすると、(基本的に)「メモ帳」アプリケーションのアイコンのビットマップ画像がPictureBoxコントロール上に表示されるはずだ。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:Windowsフォーム 処理対象:リソース
カテゴリ:クラス・ライブラリ 処理対象:リソース
カテゴリ:コンソール・アプリケーション 処理対象:キーボード
使用ライブラリ:Iconクラス(System. Drawing名前空間)
使用ライブラリ:FileNotFoundExceptionクラス(System.IO名前空間)

この記事と関連性の高い別の.NET TIPS
実行ファイルからアプリケーションのアイコンを取得するには?
システムトレイ(タスクトレイ)にアイコンを表示するには?
タスクバーにアイコンを表示させないようにするには?
ボタンにUACの盾アイコンを表示するには?
ほかのアプリケーションを実行するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • Kinectが切り開く“夢の近未来” (2012/2/2)
     日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか?
  • 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
     アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する
  • SQL Azure Data Sync入門 (2012/1/30)
     SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説
  • Windows Phoneアプリ市場の現状を分析する (2012/1/27)
     Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH