كيف يمكنني أن أخبر شريط مهام Windows برمجيًا بفتح (أو إغلاق) شريط أدوات معين؟

StackOverflow https://stackoverflow.com/questions/347274

سؤال

لقد كتبت أ شريط الأدوات الذي يعمل على شريط المهام.لسوء الحظ، بعد تثبيته، يجب على المستخدم تمكينه يدويًا.هل هناك طريقة لإخبار Explorer بفتح (أو إغلاق) شريط أدوات معين؟

أرغب في أن يقوم برنامج التثبيت، NSIS، بتشغيل شريط الأدوات عند اكتمال التثبيت (أدرك أن البرنامج الإضافي سيكون ضروريًا).

أريد أيضًا معرفة ما إذا كان من الممكن تمكين شريط الأدوات تلقائيًا لجميع المستخدمين، على سبيل المثال في بيئة الشركة حيث يتشارك عدة مستخدمين جهاز كمبيوتر.

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

المحلول

  • يقوم تعليق CodeProject بذلك عن طريق محاكاة الضغط على المفاتيح
  • يحتوي Vista+ على واجهة برمجة التطبيقات (API) للقيام بذلك ShowDeskBand و HideDeskBand
  • يحرر:يمكن لهذا الرمز الآن إضافة كائن Deskband (من Pinvoc.net و هؤلاء اثنين أسئلة منتدى MSDN):

    [ComImport]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [Guid("4CF504B0-DE96-11D0-8B3F-00A0C911E8E5")]
    public interface IBandSite
    {
        [PreserveSig]
        uint AddBand([In, MarshalAs(UnmanagedType.IUnknown)] Object pUnkSite);
        [PreserveSig]
        void RemoveBand(uint dwBandID);
    }
    
    
    private uint AddDeskbandToTray(Guid Deskband)
    {
        Guid IUnknown = new Guid("{00000000-0000-0000-C000-000000000046}");
        Guid ITrayBand = new Guid("{F60AD0A0-E5E1-45cb-B51A-E15B9F8B2934}");   
        Type TrayBandSiteService = Type.GetTypeFromCLSID(ITrayBand, true);
        IBandSite BandSite = Activator.CreateInstance(TrayBandSiteService) as IBandSite;
        object DeskbandObject = CoCreateInstance(Deskband, null, CLSCTX.CLSCTX_INPROC_SERVER, IUnknown);
        return BandSite.AddBand(DeskbandObject);
    }
    

ومثال على الاستخدام:

Guid address_toolbar_guid = new Guid("{01E04581-4EEE-11D0-BFE9-00AA005B4383}");
uint band_id = AddDeskbandToTray(address_toolbar_guid);

سيكون من المنطقي أن استدعاء مماثل لـ RemoveBand سيفي بالغرض أيضًا، لكن حتى الآن، لا يمكنني تشغيل هذا الرمز.امر اخر:يتم إغلاق نطاق سطح المكتب المضاف عند إغلاق التطبيق الذي أضافه.

نصائح أخرى

وأنا لا يمكن العثور على عنوان URL المحدد في الوقت الحالي، ولكن أتذكر أنني كنت هناك بعض المناقشات من هذا حول PDC2008 حيث الأساس هذا لم يكن ممكنا على وجه التحديد بحيث برامج عشوائية لا يمكن تعبئة شريط المهام ث / س على موافقة المستخدمين.

ومن الآثار الجانبية لذلك هو أن عدد قليل جدا من المستخدمين حتى تمكن الإتمام WMP افتراضيا.

وحسب ما فهمت، يتم تخزين المواقع والقيم وما إلى ذلك أشرطة المهام في التسجيل (نسيت المكان المحدد) حتى إذا وجدت مفتاح التسجيل المحدد الذي يمكن أن تأخذ موقعها وجعل المثبت الخاص بك إدراج مفتاح التسجيل على الكمبيوتر بحيث شريط المهام يتم تمكين.

ليس في الواقع إجابة على سؤالك، ولكن من فضلك، من فضلك:يفعل لا اكتب ملحقات Shell (وشريط المهام هو امتداد Shell) في .NET!

هذا هو السبب.

في الأساس، أنت تكسر التطبيقات الأخرى.

وإذا قمت بالتدقيق بشكل جيد، يوجد جوجل toolband في حين أن إكس يعمل وراء (GoogleDesktop.exe) حتى إذا كنت تصر على طريقة جوجل أو شريط البحث ومثيل يجب عليك التحقق مرة أخرى TrayBandSiteService وتقديم الدعم إكس ...

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