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?

War es hilfreich?

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:

scroll top