سؤال

لدي ويندوز شل التمديد التي تستخدم IShellIconOverlayIdentifier واجهة لعرض الرموز تراكب على الملفات والمجلدات.ملحق بلدي قليلا مثل TortoiseCVS أو TortoiseSVN.

في بعض الأحيان كنت بحاجة لجعل ويندوز إكسبلورر رسم كل ما من الرموز.أن هذا الاتصال SHChangeNotify مثل هذا:

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL)

هذا تحديث سطح المكتب و اليد اليمنى جزء من أي فتح مستكشف ويندوز.لا تحديث مجلد شجرة على الجانب الأيسر من أي مستكشف ويندوز.

إذا حاولت إرسال WM_SETTINGCHANGE مثل هذا:

SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0) 

على ويندوز فيستا هذا ينعش شجرة مجلد ، ولكن ليس جزء اليد اليمنى.

مزيج من SHChangeNotify() تليها WM_SETTINGCHANGE ويبدو أن تعمل بشكل جيد على ويندوز فيستا.ولكن ما زلت لا يمكن تحديث شجرة المجلد على XP إذا كان يتم عرض.

هل لدى أحدكم أي فكرة عن كيفية القيام بذلك بشكل أفضل ؟

هل هناك حل أفضل XP ؟

إرسال SHCNE_ASSOCCHANGED هو قليلا مثل ارتياد Explorer على رأسه.فإنه يسبب كامل سطح المكتب لتحديث جدا بعنف و casues أي فتح مستكشف ويندوز فضفاضة هناك انتقل الموقف.هل هناك أي شيء أقل قليلا العنف ؟

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

المحلول

هل لدى أحدكم أي فكرة عن كيفية القيام به هذا أفضل ؟

أنا شخصيا لا أعرف.ذكر السلحفاة البرامج التي تفعل نفس الشيء حتى نقطة انطلاق ممتازة سيكون لدينا نظرة على ما يفعلون في المصدر :)

هذه نتطلع إلى أن تكون ذات الصلة الملفات المصدر أن التعامل مع هذه المشكلة:

وألاحظ في RebuildIcons الأسلوب في كل من هؤلاء:

  1. تعيين قذيفة حجم الرمز أو عمق اللون إلى قيمة مؤقتة
  2. تحديثات جميع النوافذ قبل البث تغيير الإعداد
  3. يعيد قذيفة حجم الرمز أو عمق اللون إلى القيمة الأصلية
  4. تحديثات جميع النوافذ مرة ثانية مع بث تغيير الإعداد

ربما هذا هو جزء من خدعة للحصول على الأشياء التي تعمل في XP.

نصائح أخرى

استخدام spy++ لمعرفة ما WM_COMMMAND رسالة يتم إرسالها عند الضغط على F5 في مستكشف windows أو تجد القائمة ما الرسالة يستخدم عرض/تحديث

ثم استخدام FindWindow للحصول على مستكشف تريد إرسال WM_COMMAND سجلت في وقت سابق إلخ رسالة إلى ذلك.

هذا هو وسيلة ممتعة للتحكم في جميع أنواع برامج ويندوز.

يمكنك أيضا إرسال WM_KEYDOWN رسالة مع F5 keycode لجميع فتح مستكشف ويندوز.هذا هو قليلا من الاختراق على الرغم من.

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