سؤال

لدي تطبيق يسرد الملفات، وأسمح للمستخدم بالنقر بزر الماوس الأيمن فوق ملف وتطبيقي يعرض قائمة سياق Windows للملف المحدد.

أنا أستعمل SHParseDisplayName للحصول على pidl لسمام الملف. ثم ربط الكائن الأصل:

IntPtr pidlLast = IntPtr.Zero;
SHBindToParent(pidl, typeof(IShellFolder).GUID, out oShellFolder, out pidlLast);

بعد أن أمتلك الوالد يمكنني الحصول على إنشاء قائمة السياق:

IntPtr result = IntPtr.Zero;
IShellFolder shellFolder = (IShellFolder)oShellFolder;
shellFolder.GetUIObjectOf(windowHandle, (uint)pidls.Count, 
        pidls.ToArray(), typeof(IContextMenu).GUID, 0, out result);

يعمل هذا تماما عن عنصر واحد أو للعناصر مع نفس الأصل، ولكن كيف يمكنني عرض قائمة سياق للعناصر مع أولياء أمور مختلفة؟

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

المحلول

للرجوع إليها في المستقبل، على ما يبدو يمكنك استخدام CDefFolderMenu_Create2 لإنشاء قائمة سياق لعناصر شل متعددة. يمكنك العثور على بعض المعلومات الممتازة هنا:

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