Windows资源管理器上下文菜单项ID

时间:2015-04-15 11:22:04

标签: winapi contextmenu windows-explorer

使用::GetMenuItemInfo()我在Win 8.1 x 64'删除'菜单项ID等于十进制18和'属性' ID等于20.它们在任何Windows上是否相同,它们在SDK标头中的定义位置?

更新

我想使用TrackPopupMenu来显示我的应用内部某些文件的系统菜单,但我想覆盖一些项目,例如“删除”#39;。如何检查项目#i(其中i是从0到项目计数的索引)是'删除'项目将其ID更改为我自己的ID并在以后处理?如果ID是不变的,那似乎很简单,但是否则......

1 个答案:

答案 0 :(得分:4)

不要使用菜单项ID来识别命令。即使在同一台PC上,命令ID在不同时间也可能不同。如果要覆盖任何菜单项,则必须分析命令动词而不是ID。动词总是一样的。

当您拥有对象枚举菜单项的IContextMenu并使用GCS_VERBA或GCS_VERBW参数调用IContextMenu.GetCommandString函数时。当GetCommandString返回时,您将删除' string - 在此位置您有Delete命令。 GetCommandString返回你的属性' string - 在此位置有属性命令。