elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Lista con iconos de archivos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Lista con iconos de archivos  (Leído 1,782 veces)
~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Lista con iconos de archivos
« en: 16 Diciembre 2006, 20:41 pm »

Hola:

Bueno estoy intentando hacer un file manager en el q aparezcan los iconos de cada tipo de archivo. Para ello extraigo el icono de el tipo de archivo q me interesa. Este seria un ejemplo:

Código:
Const DI_MASK = &H1
Const DI_IMAGE = &H2
Const DI_NORMAL = DI_MASK Or DI_IMAGE
Private Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociatedIconA" (ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Long) As Long
Private Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
Private Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long



Private Sub Command1_Click()
Dim mIcon As Long
mIcon = ExtractAssociatedIcon(App.hInstance, "C:\Autoexec.bat", 2)
DrawIconEx Picture1.hdc, 0, 0, mIcon, 0, 0, 0, 0, DI_NORMAL
     
     MsgBox "imagen colocada"
     
il.ListImages.Add , "bat", Picture1.Picture
lv.ListItems.Add(, , "HOLA", , bat).SubItems(1) = "MUNDO"

DestroyIcon mIcon
End Sub

Hasta el MsgBox todo me funciona perfecto, pero a partir de ahi no, por q no me deja pasar la imagen del picture al Image List (il en el code), por lo q luego no puedo cargarla en la lista... Alguien sabe como puedo hacerlo???  :huh: :huh:

Otra duda q se me plantea es de donde sacar los iconos, por q podria buscar por el ordenador q usa el cliente, pero se tardaria muho rato buscando y en caso de q un tipo de archivo (imaginemos q el cliente no tiene Acrobat Reader y el server sip) se tiraria muxo tiempo buscando...
Hay algun sitio donde se guarden los iconos o hay q andar buscandolos???  :rolleyes:

Ayuda please!!!
1S4ludo


En línea

Snort


Desconectado Desconectado

Mensajes: 338



Ver Perfil
Re: Lista con iconos de archivos
« Respuesta #1 en: 17 Diciembre 2006, 13:51 pm »

   Para buscar las extensiones, pasate por el registro, en la clave HKEY_CLASSES_ROOT estan todas, y dependiendo de la extension tienes mas o menos datos sobre ell, lo minimo es que te ponga, por ejemplo en la extension *.8bf, en la clave (Predeterminado), el programa con el que se abre, en este caso, PhotoshopPlugIn. Pero en las extensiones mas comunes tienes algunos datos mas, mirate la *.txt, por ejemplo. A partir de ahi seguramente habra algun modo de encontrar los iconos respectivos, mirate algun manual de estos de agregar la extension *.troj como ejecutable y que parezca un txt, hay muchos.
   Comprueba en las propiedades del listview que puedes meter iconos.

Espero qe te sirva de algo, saludos


En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: Lista con iconos de archivos
« Respuesta #2 en: 17 Diciembre 2006, 17:01 pm »

Gracias por tu ayuda Snort pero KIZAR me a dado una idea mejor, q es ir creando los archivos y funciona a las mil maravillas (ya e acabado el FileManager  ;D)

Mirate este post si te interesa como hacerlo

1S4ludo
En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: Lista con iconos de archivos
« Respuesta #3 en: 17 Diciembre 2006, 19:38 pm »

Un ejemplo muy interesante, Agrega solo un Listview pero que este sea de (Microsoft common controls 5.0(SP2) y no la versión 6.0 y el siguiente codigo

bien lo que hace es crear un imagelist virtual con los iconos correspondiente a las extensiones existentes/asociada , y las va obteniendo desde el registro

Citar
Option Explicit
Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long
Const HKEY_CLASSES_ROOT = &H80000000

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const LVM_FIRST = &H1000
Const LVM_SETIMAGELIST = (LVM_FIRST + 3)
Const LVM_SETITEM = (LVM_FIRST + 6)
Const LVSIL_SMALL = 1
Const LVIF_IMAGE = &H2
Private Type LV_ITEM
    mask As Long
    iItem As Long
    iSubItem As Long
    State As Long
    StateMask As Long
    lpszText As Long
    cchTextMax As Long
    iImage As Long
    lParam As Long
End Type


Private Declare Function SHGetFileInfo Lib "shell32" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long
Const SHGFI_SYSICONINDEX = &H4000
Const SHGFI_SMALLICON = &H1
Const MAX_PATH = 260
Const FILE_ATTRIBUTE_NORMAL = &H80
Const SHGFI_USEFILEATTRIBUTES = &H10
Const SHGFI_TYPENAME = &H400
Private Type SHFILEINFO
    hIcon As Long
    iIcon As Long
    dwAttributes As Long
    szDisplayName As String * MAX_PATH
    szTypeName As String * 80
End Type
Private Sub Form_Load()
    Dim sfi As SHFILEINFO, lvi As LV_ITEM
    'set view and add columns
    ListView1.View = lvwReport
    ListView1.ColumnHeaders.Add , , "Extension", 600
    ListView1.ColumnHeaders.Add , , "Description", 3000
    'associate the system image list (small icons) to the list view
    SendMessage ListView1.hWnd, LVM_SETIMAGELIST, LVSIL_SMALL, ByVal _
    SHGetFileInfo("C:\", 0, sfi, Len(sfi), SHGFI_SYSICONINDEX Or SHGFI_SMALLICON)
    Dim Index As Long, sName As String * 1000
    lvi.mask = LVIF_IMAGE
    'enumerate all file extensions from registry
    While RegEnumKeyEx(HKEY_CLASSES_ROOT, Index, sName, Len(sName), ByVal 0, vbNullString, ByVal 0, ByVal 0&) = 0
        If Asc(sName) = 46 Then
            'retrieve icon index and type description
            SHGetFileInfo sName, FILE_ATTRIBUTE_NORMAL, sfi, Len(sfi), SHGFI_USEFILEATTRIBUTES Or SHGFI_SMALLICON Or SHGFI_SYSICONINDEX Or SHGFI_TYPENAME
            'add the item (and subitem) to the listview
            ListView1.ListItems.Add(, , sName).SubItems(1) = sfi.szTypeName
            'set the icon index of the listitem
            lvi.iImage = sfi.iIcon
            lvi.iItem = ListView1.ListItems.Count - 1
            SendMessage ListView1.hWnd, LVM_SETITEM, 0, lvi
        End If
        Index = Index + 1
    Wend
End Sub
Private Sub Form_Resize()
    ListView1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'Disassociate the listview from the system imagelist.
    'this MUST be done on Win98 otherwise the system listimage crashes.
    'and all icons in the shell are gone!.
    'WinXP/2K does not require this.
    SendMessage ListView1.hWnd, LVM_SETIMAGELIST, LVSIL_SMALL, ByVal 0&
End Sub

Saludos
En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: Lista con iconos de archivos
« Respuesta #4 en: 17 Diciembre 2006, 21:13 pm »

Muy bueno el code LeandroA  ;)

Thanks
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda customizando los iconos de los archivos, desde el registro...
Windows
Eleкtro 0 1,390 Último mensaje 3 Diciembre 2011, 17:18 pm
por Eleкtro
Lista de archivos.
GNU/Linux
APOKLIPTICO 8 3,390 Último mensaje 26 Enero 2013, 17:55 pm
por alister
WhatsApp sumó un gesto obsceno a su lista de íconos
Noticias
:ohk<any> 3 2,113 Último mensaje 26 Agosto 2015, 12:18 pm
por DeMoNcRaZy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines