Es wird ein Menü Windows-Kontextes für mehrere Artikel
-
18-09-2019 - |
Frage
Ich habe eine Anwendung, die Dateien auflistet, und ich kann der Benutzer einen Rechtsklick auf eine Datei und meine Anwendung zeigt das Windows-Kontextmenü für die ausgewählte Datei.
Ich benutze SHParseDisplayName
einen PIDL nach einem Dateinamen zu erhalten. Dann binde ich an das übergeordnete Objekt:
IntPtr pidlLast = IntPtr.Zero;
SHBindToParent(pidl, typeof(IShellFolder).GUID, out oShellFolder, out pidlLast);
Nachdem ich die Eltern habe ich kann das Kontextmenü erhalten bauen:
IntPtr result = IntPtr.Zero;
IShellFolder shellFolder = (IShellFolder)oShellFolder;
shellFolder.GetUIObjectOf(windowHandle, (uint)pidls.Count,
pidls.ToArray(), typeof(IContextMenu).GUID, 0, out result);
Das funktioniert perfekt für 1 Stück oder für Teile mit den gleichen Eltern, aber wie ich für Einzelteile mit verschiedenen Eltern ein Kontextmenü kann angezeigt werden?
Lösung
Für die Zukunft, offenbar können Sie CDefFolderMenu_Create2
verwenden, um ein Kontextmenü für mehr Shell Elemente zu erstellen. Sie können einige ausgezeichnete Informationen finden Sie hier:
- [xplorer²] - Erweiterte Shell-Kontextmenü