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

Windows Explorer context menu item ids

使用 ::GetMenuItemInfo() 我看到在我的 Win 8.1 x 64 上 'Delete' 菜单项 ID 等于十进制 18 而 'Properties' ID 等于 20。它们是否相同任何 Windows 以及它们在 SDK 中的何处定义 headers?

更新

我想使用 TrackPopupMenu 来显示我应用程序中某些文件的系统菜单,但我想覆盖某些项目,例如 'Delete'。我如何检查项目#i(其中 i 是从 0 到项目计数的索引)是否是 'Delete' 项目以将其 id 更改为我自己的并稍后处理?如果ID是常量,看起来很简单,否则...

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

当您拥有对象枚举菜单项的 IContextMenu 并使用 GCS_VERBA 或 GCS_VERBW 参数调用 IContextMenu.GetCommandString 函数时。当 GetCommandString return 你 'delete' 字符串 - 在这个位置你有删除命令。当 GetCommandString return 你 'properties' 字符串 - 在这个位置你有 Properties 命令。