Reutilizando el icono de aplicación .NET
-
20-09-2019 - |
Pregunta
¿Cómo puedo volver a utilizar el icono de la aplicación desde el interior de mi solicitud, así que no tengo que incrustado dos veces (una vez por el icono de la aplicación y una vez para uso interno)?
Solución
Usted puede leer de nuevo a través de P / interoperabilidad llama. Es algo parecido a esto:
static Icon GetAppIcon() {
var fileName = Assembly.GetEntryAssembly().Location
System.IntPtr hLibrary = NativeMethods.LoadLibrary(fileName);
if (!hLibrary.Equals(System.IntPtr.Zero)) {
System.IntPtr hIcon = NativeMethods.LoadIcon(hLibrary, "#32512");
if (!hIcon.Equals(System.IntPtr.Zero)) {
return Icon.FromHandle(hIcon);
}
}
return null; //no icon was retrieved
}
Además, las firmas nativas son:
private static class NativeMethods {
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
static extern internal IntPtr LoadIcon(IntPtr hInstance, string lpIconName);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
static extern internal IntPtr LoadLibrary(string lpFileName);
}
Otros consejos
Parece más fácil de usar Icon.ExtractAssociatedIcon , como se indica en esta pregunta relacionada: Evitar recursos duplicados en un icono .NET (C #) del proyecto
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow