Riutilizzo L'icona .NET
-
20-09-2019 - |
Domanda
Come posso riutilizzare l'icona dell'applicazione da dentro il mio applicazione in modo che non devo incorporato due volte (una volta per l'icona dell'applicazione e una volta per uso interno)?
Soluzione
Si può leggere di nuovo tramite P / Interop chiama. E 'più o meno così:
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
}
Inoltre, le firme autoctone sono:
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);
}
Altri suggerimenti
Sembra più facile da usare Icon.ExtractAssociatedIcon , come descritto in questa domanda correlata: Evitare risorse icona duplicate in un NET (C #) del progetto
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow