Dicha función obtiene el handle del ícono de una aplicación mediante la ruta de su ejecutable.La firma de la función ExtractIconEx es :
UINT WINAPI ExtractIconEx(
__in LPCTSTR lpszFile,
__in int nIconIndex,
__out_opt HICON *phiconLarge,
__out_opt HICON *phiconSmall,
__in UINT nIcons
);
//Para obtener un solo ícono
[DllImport("shell32.dll", CharSet=CharSet.Auto)]
internal static extern int ExtractIconEx(string stExeFileName, int nIconIndex, ref IntPtr phiconLarge, ref IntPtr phiconSmall, int nIcons);
//Para obtener un array de íconos
[DllImport("shell32.dll", CharSet=CharSet.Auto)]
internal static extern int ExtractIconEx(string stExeFileName, int nIconIndex, IntPtr[] phiconLarge, IntPtr[] phiconSmall, int nIcons);
Donde:
- lpszFile: indica el path del ejecutable de la aplicación.
-nIconIndex : Índice del icono a obtener.Si es cero se obtendrá el primer ícono
-*phiconLarge : un Array de handles dónde serán almacenados los iconos extraídos.También puede ser un solo handle.Si es null ningun ícono 'large' será extraído.
-*phiconSmall : un Array de handles dónde serán almacenados los iconos extraídos.También puede ser un solo handle.Si es null ningun ícono 'small' será extraído.
-nIcons :Número de íconos a ser extraídos.
En un post anterior ya se ha visto cómo recuperar la ruta o path del ejecutable de una aplicación mediante el Handle de ventana. A continuación muestro un método que retorna el handle del Icono de la aplicación:
private static IntPtr GetHicon(string exePath)
{
//sólo obtendré el largeIcon
IntPtr largeIcon = IntPtr.Zero;
IntPtr smallIcon = IntPtr.Zero;
ExtractIconExA(exePath, 0, ref largeIcon, ref smallIcon, 1);
DestroyIcon(smallIcon);
return largeIcon;
}
Captura:
Bajar solución completa AQUÍ.(VS2008/WPF)
No hay comentarios:
Publicar un comentario