5

アプリケーション内からアプリケーションアイコンを再利用して、2回(アプリケーションアイコン用に1回、内部使用用に1回)埋め込む必要がないようにするにはどうすればよいですか?

4

2 に答える 2

6

この関連する質問で概説されて いるように、 Icon.ExtractAssociatedIconを使用するのが最も簡単なようです: .NET(C#)プロジェクトでの重複するアイコンリソースの回避

于 2009-08-29T18:25:12.143 に答える
4

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);
}
于 2009-08-29T18:17:48.057 に答える