Повторное использование значка приложения .NET
-
20-09-2019 - |
Вопрос
Как я могу повторно использовать значок приложения из своего приложения, чтобы мне не приходилось встраивать его дважды (один раз для значка приложения и один раз для внутреннего использования)?
Решение
Вы можете прочитать его обратно через вызовы P/Interop.Это выглядит примерно так:
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
}
кроме того, собственные подписи:
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);
}
Другие советы
Кажется, проще всего использовать Icon.ExtractAssociatedIcon, как указано в этом связанном вопросе:Как избежать дублирования ресурсов значков в проекте .NET (C#)
Не связан с StackOverflow