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)?

War es hilfreich?

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
scroll top