إعادة استخدام أيقونة تطبيق .NET
-
20-09-2019 - |
سؤال
كيف يمكنني إعادة استخدام رمز التطبيق من داخل التطبيق الخاص بي حتى لا أضطر إلى تضمينه مرتين (مرة لأيقونة التطبيق ومرة للاستخدام الداخلي)؟
المحلول
يمكنك قراءتها مرة أخرى عبر مكالمات 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);
}
نصائح أخرى
يبدو أنه الأسهل في الاستخدام Icon.ExtractAssociatedIcon, ، كما هو موضح في هذا السؤال ذي الصلة:تجنب موارد الأيقونات المكررة في مشروع .NET (C#).
لا تنتمي إلى StackOverflow