ExtractAssociatedIcon

機能
指定のファイルの拡張子に関連付けた実行ファイルのアイコンのハンドルを取得する
Declare Function ExtractAssociatedIcon lib "shell32.dll" Alias "ExtractAssociatedIconA" _
(ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Any) As Long
Declare Function ExtractAssociatedIcon lib "shell32.dll" Alias "ExtractAssociatedIconA" _
(ByVal hInst As Integer, ByVal lpIconPath As String, lpiIcon As Integer) As Integer

HICON ExtractAssociatedIcon(
HINSTANCE hInst,
LPTSTR lpIconPath,
LPWORD lpiIcon
);
引数
hInst

この関数を呼び出したアプリケーションのインスタンスハンドル
lpIconPath
任意の拡張子を持つアプリケーション名
実行モジュール(EXEやDLLなど)のファイル名を設定することも可能
lpiIcon
取得するアイコンのインデックス
戻り値
正常終了のとき             アイコンのハンドル
エラーのとき               0
備考
lpIconPathに設定したファイルの種類に応じて動作が異なる

実行モジュールでないファイルを指定したとき
  ハンドルは拡張子に関連付けられた実行モジュールの最初のアイコンのハンドル

実行モジュールのファイルを指定したとき
  ハンドルは実行モジュールの最初のハンドル

存在しないファイルを指定したとき
  ハンドルはデフォルトのアイコンのハンドル

.ICOまたは.CURファイルを指定したとき
  ハンドルはアイコン、またはカーソルのハンドル

.BMPファイルを指定したとき
  ハンドルはビットマップをアイコンのサイズに変更したアイコンのハンドル

取得したアイコンのハンドルはDestroyIcon()関数で解放する
サンプル
ダウンロード(ExtractAssociatedIcon.lzh)
'指定のファイルの拡張子に関連付けた実行ファイルのアイコンのハンドルを取得する
Private Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociatedIconA" _
        (ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Any) As Long
'アイコンを描画する
Private Declare Function DrawIcon Lib "user32.dll" _
        (ByVal hDC As Long, ByVal x As Long, _
        ByVal y As Long, ByVal hIcon As Long) As Long
'アイコンのハンドルを解放する
Private Declare Function DestroyIcon Lib "user32.dll" (ByVal hIcon As Long) As Long

Private Sub Command1_Click() Dim hIcon As Long hIcon = ExtractAssociatedIcon(App.hInstance, Me.Text1.Text, 0) Call DrawIcon(Me.Picture1.hDC, 0, 0, hIcon) Call DestroyIcon(hIcon) End Sub
Private Sub Command2_Click() With Me.CommonDialog1 .Filter = "*.*|*.*" .ShowOpen If .FileName <> "" Then Me.Text1.Text = .FileName End If End With End Sub
Private Sub Form_Load() Me.Command1.Enabled = False End Sub
Private Sub Text1_Change() If Me.Text1.Text <> "" Then Me.Command1.Enabled = True Else Me.Command1.Enabled = False End If End Sub