2010-02-05 45 views
1

我有一個列出文件的應用程序,我允許用戶右鍵單擊文件,我的應用程序顯示所選文件的Windows上下文菜單。顯示多個項目的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); 

這完全適用1項或具有相同父項目,但如何顯示不同父母項目的上下文菜單?

+0

有沒有人嘗試過的每之前做到這一點?只要項目共享相同的父項,我就可以做到這一點,但是如何用不同的父項目調用菜單? – 2010-02-09 18:35:40

回答

1

爲了將來的參考,顯然你可以使用CDefFolderMenu_Create2爲多個shell項目創建一個上下文菜單。你可以找到一些優秀的信息在這裏:

http://www.zabkat.com/blog/08Jul07.htm