Winapi: إدخال قائمة سياق الاتصال المقدمة بواسطة Shell Extension

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

  •  26-09-2019
  •  | 
  •  

سؤال

يوفر Software Dropbox ملحق Shell يضيف عناصر قائمة السياق إلى جميع الملفات في مجلد معين. يقوم أحد هؤلاء بإنشاء رابط عام لعرض الملف المحدد.

في أداة C# أريد أن أتصل بهذا الإدخال دون أي تفاعل مستخدم. أرغب في تحقيق نفس السلوك كما لو أن المستخدم نقر على عنصر قائمة السياق في ملف محدد.

أعلم أن تمديد shell يتم توفيره بواسطة DLL ، هل من الممكن إجراء مكالمة لهذا DLL لتحقيق السلوك المتوقع؟

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

المحلول

امتدادات شل تنفذ icontextmenu ومن الممكن تنفيذ أوامر القائمة دون عرض قائمة (انظر منشور المدونة هذا للحصول على تفاصيل حول "استضافة" icontextmenu)

بمجرد حصولك على القائمة ، يمكنك استدعاء icontextmenu :: getCommandString والبحث عن فعل معين ، إذا لم يكن Dropbox لديه فعل فريد إلى حد ما ، فسيتعين عليك القيام بشيء اختراق ، إما المطابقة عن طريق نص القائمة وحده Extension Dropbox Shell DLL مباشرة (DLLGETCLASSOBJECT EXPORT) وتزييف كل شيء (التظاهر بأنه com و shell) أو إذا كنت تعرف clsid ، يمكنك على الأقل الحصول على مساعدة من com والقيام بجزء shell.

هناك أداة مجانية تسمى Runmenu يتيح لك ذلك اللعب باستخدام قوائم شل/icontextmenu (أنا متأكد من أنه يمكنك العثور على نسخة في مكان ما)

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