一个CommonDialog,一个CommandButton,一个PictureBOX Option Explicit Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long Private Sub Command1_Click() Dim total As Long Dim p(50) As Long Dim i As Integer Me.Picture1.Cls Me.CommonDialog1.Filter = "图标|*.Exe;*.Ico;*.Dll" Me.CommonDialog1.ShowOpen If Dir(Me.CommonDialog1.FileName) <> "" Then If ExtractIcon(App.hInstance, Me.CommonDialog1.FileName, -1) = 0 Then '如果没有图标 MsgBox "No Icon!" Else total = ExtractIcon(App.hInstance, Me.CommonDialog1.FileName, -1) '取得总图标数 For i = 0 To total - 1 p(i) = ExtractIcon(App.hInstance, Me.CommonDialog1.FileName, i) '读取每个图标 Next i For i = 0 To total - 1 '依次显示每个图标 DrawIcon Picture1.hdc, 34 * i, 0, p(i) Next i End If End If End Sub