为何OneDrive上下文菜单项在IContextMenu中重复显示?
我的应用中,用户右键点击项目时会通过IContextMenu展示右键菜单,逻辑和Windows资源管理器一致,但目前遇到OneDrive菜单项重复的问题:一组菜单项以GUID作为verb,另一组无verb但id与前者不同,无法通过id/verb/文本过滤重复项。
已尝试的两种IContextMenu获取方式
我试过两种获取IContextMenu的方式,均出现相同的重复问题:
- 使用
IShellFolder.GetUIObjectOf:
shellFolder.GetUIObjectOf(IntPtr.Zero, pidls.Length, pidls, GetType(IContextMenu).GUID, 0, ptrContextMenu)
- 使用
SHCreateDefaultContextMenu:
Dim dcm As New DEFCONTEXTMENU With { .psf = shellFolder, .pidlFolder = folderpidl, .cidl = pidls.Count, .apidl = pidlsPtr, .punkAssociationInfo = IntPtr.Zero, .cKeys = 0, .aKeys = IntPtr.Zero } Functions.SHCreateDefaultContextMenu(dcm, GetType(IContextMenu).GUID, ptrContextMenu)
问题的系统特性
该问题为Windows 11特有:
- 纯净安装的Windows 10 Enterprise(无额外软件)中未出现此问题;
- 纯净安装的Windows 11 Enterprise中,会显示两个OneDrive菜单项,且启用状态不同;
- Windows 11预装OneDrive,Windows 10需手动下载;另外Windows 11新增了
IExplorerCommand接口,推测该问题可能与此相关。
想了解是否有其他开发者在自己的软件中遇到过同样的问题?
内容的提问来源于stack exchange,提问作者miss programmer
相关产品推荐
相关产品推荐

