Tôi có thể sử dụng lại biểu tượng ứng dụng từ bên trong ứng dụng của mình như thế nào để không phải nhúng hai lần (một lần cho biểu tượng ứng dụng và một lần để sử dụng nội bộ)?Sử dụng lại Biểu tượng ứng dụng .NET
5
A
Trả lời
4
Bạn có thể đọc lại thông qua các cuộc gọi P/Interop. Nó đi một cái gì đó như thế này:
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
}
thêm vào đó, chữ ký có nguồn gốc là:
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);
}
6
Có vẻ như đơn giản nhất để sử dụng Icon.ExtractAssociatedIcon, như được nêu trong câu hỏi có liên quan này: Avoiding duplicate icon resources in a .NET (C#) project