Wiederverwenden der .NET-Anwendung Icon
-
20-09-2019 - |
Frage
Wie kann ich das Anwendungssymbol aus meiner Anwendung wiederverwendet werden, so habe ich nicht, um es zweimal eingebettet (einmal für das Anwendungssymbol und einmal für den internen Gebrauch)?
Lösung
Sie können es zurück über P / Interop Anrufe lesen. Es geht in etwa so:
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
}
zusätzlich native Signaturen sind:
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);
}
Andere Tipps
Es scheint am einfachsten Icon.ExtractAssociatedIcon , wie er in dieser Frage im Zusammenhang skizziert: Vermeidung von doppelten Symbolressourcen in einem .NET (C #) Projekt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow