谢谢

解决方案 »

  1.   

    Dim lIcon As Long
    Dim sSourcePgm As String
    Dim sDestFile As StringPrivate Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" _
    (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As LongPrivate Declare Function DrawIcon Lib "user32" _
    (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As LongPrivate Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As LongPrivate Sub CmdSave_Click() '另存图示
      On Error Resume Next
      With Dlg                  '存档问话框
        .FileName = sDestFile
        .CancelError = True
        .Action = 2
        If Err Then
          Err.Clear
          Exit Sub
        End If
        sDestFile = .FileName
        SavePicture Picture1.Image, sDestFile '将抓出的图示存盘
      End With
    End SubPrivate Sub CmdOpen_Click() '开启档案
      Dim a%
      
      On Error Resume Next
      With Dlg                  '开档问话框
        .FileName = sSourcePgm
        .CancelError = True
        .DialogTitle = "请选择包含图示的 DLL 或 EXE 文件"
        .Filter = "Icon Resources (*.ico;*.exe;*.dll)|*.ico;*.exe;*.dll|All files|*.*"
        .Action = 1
        If Err Then
          Err.Clear
          Exit Sub
        End If
        sSourcePgm = .FileName
        Label3.Caption = .FileName
        DestroyIcon lIcon
        Do
          lIcon = ExtractIcon(App.hInstance, sSourcePgm, a)
          If lIcon = 0 Then Exit Do
          a = a + 1
          DestroyIcon lIcon
        Loop
        If a = 0 Then
          MsgBox "在这个档中没有任何图示!"
        End If
        Label1.Caption = "在这个档中共有 " & a & " 个图示"
        VScroll1.Max = IIf(a = 0, 0, a - 1)
        VScroll1.Value = 0
        VScroll1_Change
      End With
    End SubPrivate Sub Form_Load()
      CmdOpen_Click
    End Sub
    Private Sub VScroll1_Change()
      Label2.Caption = "正在浏览的图标索引值: " & VScroll1.Value
      DestroyIcon lIcon
      Picture1.Cls
      lIcon = ExtractIcon(App.hInstance, sSourcePgm, VScroll1.Value)
      Picture1.AutoSize = True
      Picture1.AutoRedraw = True
      DrawIcon Picture1.hdc, 0, 0, lIcon
      Picture1.Refresh
    End Sub
      

  2.   

    楼上的可能是我说的不太清楚,我不是指EXE\dll里面的所有图标我的意思是指一个文件(.BMP .ASP .SWF等等)其中一个反缀名显示它的图标在一个IMAGE BOX里面
      

  3.   

    我想,楼主是想要,在如:listview里显示,一个文件名如(abc.txt|abc.exe|abc.jpg|abc.asp...)的相关图标到指定问题吧?也就是类似读取它的属性?(相关ICO)呵呵,我有一个土方法,也不知道是不是好方法,就是得到相关后辍后,跟读已知的后辍(如:.bmp),去读取注册表(HKEY_CLASSES_ROOT\.bmp)的默认值,就会得到一个类型(如:Paint.Picture),再根据读取到的HKEY_CLASSES_ROOT\(**读取到的**)\shell\open\command\,(如:HKEY_CLASSES_ROOT\Paint.Picture\shell\open\command),就会得到一个ICO的地址.再把这ICO给...呵呵,也许我这方法.太复杂了...或者有比这方法更简单的!
      

  4.   

    错了.后边的注册表,不是那个,应该是:HKEY_CLASSES_ROOT\(**读取到的**)\DefaultIcon呵呵.!
      

  5.   

    我想要的搜索 http://www.531d.com 找你想要的一切