.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」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間