Повторное использование значка приложения .NET - PullRequest
5 голосов
/ 29 августа 2009

Как я могу повторно использовать значок приложения из моего приложения, чтобы мне не приходилось встраивать его дважды (один раз для значка приложения и один раз для внутреннего использования)?

Ответы [ 2 ]

6 голосов
/ 29 августа 2009

Кажется, проще всего использовать Icon.ExtractAssociatedIcon , как указано в этом связанном вопросе: Как избежать дублирования ресурсов значков в проекте .NET (C #)

4 голосов
/ 29 августа 2009

Вы можете прочитать его обратно с помощью вызовов 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);
}
...