拡張子に関連づけられたアイコンを取得する方法
◆概要
このページは、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
◆実行結果