如何在我的应用程序中重用应用程序图标,这样我就不必嵌入两次(一次用于应用程序图标,一次用于内部使用)?
问问题
1043 次
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 回答