(.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 使うことにしました。
TryDim appIcon As Icon = Icon.ExtractAssociatedIcon(m_strFilePath)
pctMemoFile.Image = appIcon.ToBitmap()
Catch ex As ArgumentException
pctMemoFile.Image = My.Resources.ファイルない時のリソース
End Try
UNCくらい CLR で解決してくれよって感じです。