Mostrando un menu contestuale di Windows per gli oggetti multipli
-
18-09-2019 - |
Domanda
Ho una domanda che elenca i file, e consente all'utente di fare clic destro su un file e la mia applicazione mostra il menu contestuale di Windows per il file selezionato.
Io uso SHParseDisplayName
per ottenere un PIDL per un nome di file. Poi mi legano alla oggetto padre:
IntPtr pidlLast = IntPtr.Zero;
SHBindToParent(pidl, typeof(IShellFolder).GUID, out oShellFolder, out pidlLast);
Dopo che ho il genitore posso ottenere costruire il menu di contesto:
IntPtr result = IntPtr.Zero;
IShellFolder shellFolder = (IShellFolder)oShellFolder;
shellFolder.GetUIObjectOf(windowHandle, (uint)pidls.Count,
pidls.ToArray(), typeof(IContextMenu).GUID, 0, out result);
Questo funziona perfettamente per 1 articolo o per gli elementi con lo stesso genitore, ma come faccio a visualizzare un menu contestuale per gli elementi con diversi genitori?
Soluzione
Per riferimento futuro, a quanto pare è possibile utilizzare CDefFolderMenu_Create2
per creare un menu di scelta rapida per gli oggetti multipli shell. Potete trovare alcune informazioni eccellente qui:
- [xplorer²] - avanzata menu contestuale shell