拡張子に関連づけられたアイコンを取得する方法

◆概要

このページは、Visual Basic 6.0で拡張子に関連づけられたアイコンを取得する方法について記載しています。


◆内容

APIのExtractAssociatedIcon関数を利用すると、拡張子に関連づけられたアイコンを取得することができます。


◆Sample code

次のサンプルを使用するために、フォームに次のコントロールを配置します。
アイコンを表示するためのPictureBox1
ファイルのパスを入力するためのテキストボックス:Text1
コモンダイアログボックスを表示するためのコマンドボタン:Command2
ファイルをオープンするためのダイアログボックス:CommonDialog1
アイコンを取得するプロシージャを起動するためのコマンドボタン:Command1

フォームの設計
'指定のファイルの拡張子に関連付けた実行ファイルのアイコンのハンドルを取得する
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

◆実行結果

実行結果

▼ページトップへ