Power Builder - Extraer el icono asociado a un fichero...

 
Vista:

Extraer el icono asociado a un fichero...

Publicado por SinNombre (30 intervenciones) el 29/12/2003 10:47:21
Hola

Necesito extraer los iconos asociados con los distintos ficheros del sistema para poder dibujarlos en un Treeview.

He visto una Api de Windows que me permite extraer dichos iconos, llamada ExtractAssociatedIcon, pero el primer parámetro que utiliza es un puntero al handle de la instancia de la aplicación (hInst) y no sé cómo obtenerlo.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Extraer el icono asociado a un fichero...

Publicado por Oscar (1178 intervenciones) el 29/12/2003 17:41:18
1. Declaras las funciones externas:
FUNCTION ulong ExtractAssociatedIconA( ulong hInstance, REF string szFileName, REF uint nIconIndex ) LIBRARY "shell32.dll"

FUNCTION ulong GetDC(ulong hwnd) LIBRARY "user32.dll"

FUNCTION boolean DrawIconEx(ulong hdc,ulong xLeft,ulong yTop,ulong hIcon,ulong cxWidth,ulong cyWidth,ulong istepIfAniCur,ulong hbrFlickerFreeDraw,ulong diFlags) LIBRARY "user32.dll"

2. Script en PB
//El ExtractAssociatedIconA sólo obtiene el handle del icono (un número)
Ulong hIcon
Uint uIcon
String ls_file

ls_file = "C:\temp\test.doc"
hIcon = ExtractAssociatedIconA( Handle( GetApplication() ), ls_file, uIcon )

//Si quieres dibujar ese icono por ejemplo en un control Picture (p_1).
//Tienes que añadir:
Boolean rtn
ulong l_handle, l_device

l_handle = handle(p_1)
l_device = GetDC(l_handle)
rtn = DrawIconEx(l_device,0,0,hIcon,0,0,0,0,hIcon)

Nota: Por el momento existen dos problemas:
* El icono por defecto es grande.
* Cómo asociar al TreeView
.
Si no resuelves eso, la otra alternativa sería tener algunos iconos en una carpeta, y dependiendo del tipo de archivo (extensíon), insertarlos con un Case. Ve la ayuda de "AddPicture". Es justo lo que quieres hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar