Alguien sabe como convertir una imagen a formato ico, lo que pasa es que me e trabado al extraer los iconos de un X archivo por ejemplo de un exe, dll, txt (Iconos segun la configuracion e la pc actual en tiempo actual) y posteriormente como es de esperarse mostrarlo en un hdc (en uno de memoria) y guardarlo pero como es de esperarse se guarda en formato BMP...
Uso las apis Extracticon, drawicon, assosiatedicon, yestaba pensando en usar las apis para los recursos de archivos (LoadResource, FindResource, etc ) y de esta forma guardarlo con el cabezar de un formato ico, pero es muy laborioso, ademas que que no cuento con dicha informaciòn
a lo que voy es guardar de un hdco bmp a ico, el icono leido con extractico y dibujado en el ndc con drawico, omo se guardaria entonces, a un formato Valido .ico?
Dulces Lunas
hola te recomiendo veas este link (http://www.vbaccelerator.com/home/VB/Utilities/Alpha_Icon_Creator/VB6_Alpha_Icon_Creator.asp) mirate la clase cFileIcon esta muy buena.
algo mas sencillo pero los iconos se ven muy feos
Option Explicit
Private Declare Function OleCreatePictureIndirect Lib "oleaut32.dll" (pDicDesc As IconType, riid As CLSIdType, ByVal fown As Long, lpUnk As Object) 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 Declare Function DestroyIcon Lib "user32.dll" (ByVal hIcon As Long) As Long
Private Type IconType
cbSize As Long
picType As PictureTypeConstants
hIcon As Long
End Type
Private Type CLSIdType
id(16) As Byte
End Type
Private Function ExtractCompatibleIcon(sPathFile As String, IconIndex As Long) As IPictureDisp
Dim Unkown As IUnknown
Dim Icon As IconType
Dim CLSID As CLSIdType
Dim hIcon As Long
hIcon = ExtractIcon(0, sPathFile, IconIndex)
With Icon
.cbSize = Len(Icon)
.picType = vbPicTypeIcon
.hIcon = hIcon
End With
With CLSID
.id(8) = &HC0
.id(15) = &H46
End With
Call OleCreatePictureIndirect(Icon, CLSID, 1, Unkown)
Set ExtractCompatibleIcon = Unkown
DestroyIcon hIcon
End Function
Private Sub Form_Load()
Me.Picture = ExtractCompatibleIcon("explorer.exe", 1)
SavePicture ExtractCompatibleIcon("calc.exe", 0), "C:\calculadora.ico"
'Me.Picture = LoadPicture("C:\calculadora.ico")
End Sub
Saludos
Muchas gracias no sabia eso de OleCreatePictureIndirect, revisare mejor el cfileicon
Dulces Lunas.!¡