سؤال

كيف يمكنني إعادة استخدام رمز التطبيق من داخل التطبيق الخاص بي حتى لا أضطر إلى تضمينه مرتين (مرة لأيقونة التطبيق ومرة ​​للاستخدام الداخلي)؟

هل كانت مفيدة؟

المحلول

يمكنك قراءتها مرة أخرى عبر مكالمات 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#).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top