عرض قائمة سياق Windows لعناصر متعددة
-
18-09-2019 - |
سؤال
لدي تطبيق يسرد الملفات، وأسمح للمستخدم بالنقر بزر الماوس الأيمن فوق ملف وتطبيقي يعرض قائمة سياق 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
لإنشاء قائمة سياق لعناصر شل متعددة. يمكنك العثور على بعض المعلومات الممتازة هنا:
- Xplorre²] - قائمة سياق شل المتقدمة 🕗
لا تنتمي إلى StackOverflow