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?

È stato utile?

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:

scroll top