指定のファイルの拡張子に関連付けた実行ファイルのアイコンのハンドルを取得する
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
任意の拡張子を持つアプリケーション名lpiIcon
実行モジュール(EXEやDLLなど)のファイル名を設定することも可能
取得するアイコンのインデックス戻り値
正常終了のとき アイコンのハンドル備考
エラーのとき 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