3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(.Net)Icon.ExtractAssociatedIcon メソッドにやられた

System.Drawing.Icon.ExtractAssociatedIcon(filePath) メソッドを使うと、引数にファイルパスを渡すだけで簡単にファイルに関連付けられたアイコンが取得できます。

今回はこれにやられました。

このメソッド、引数のファイルパスに UNC 指定するとだめみたいなのです。(¥¥server¥a¥a.txtとか)

UNCや存在しないパスを指定すると、ArgumentException が発生します。

MSDNにも書いてましたが、全然気づかずに使ってました。

一応、下記のように、ファイル存在チェックはしてたんですが。。。

'pctMemoFileはPictureBox,m_strFilePathはファイルパス

If File.Exists(m_strFilePath) Then

Dim appIcon As Icon = Icon.ExtractAssociatedIcon(m_strFilePath)

pctMemoFile.Image = appIcon.ToBitmap()

Else

pctMemoFile.Image = My.Resources.ファイルない時のリソース

End If

ファイルない時も ArgumentException 発生するので、Try Cacth 使うことにしました。

Try

Dim appIcon As Icon = Icon.ExtractAssociatedIcon(m_strFilePath)

pctMemoFile.Image = appIcon.ToBitmap()

Catch ex As ArgumentException

pctMemoFile.Image = My.Resources.ファイルない時のリソース

End Try

UNCくらい CLR で解決してくれよって感じです。