如何使用基于 IExecuteCommand 的 shell 扩展使某些上下文菜单选项变灰?

How to gray out some context-menu options with an IExecuteCommand-based shell extension?

使用 IExecuteCommand 方法(如 this blog post 中所述)实现上下文菜单 shell 扩展时,如何将给定的菜单选项变灰?

例如假设 shell 扩展提供了一些菜单选项,其中一些应该根据 shell 扩展计算的某些状态和条件变灰,例如:如果用户右键单击一个文件并且 shell 扩展检测到该文件具有一些给定的属性,一些 shell 扩展上下文菜单选项应该变灰。

如何使用 IExecuteCommand 做到这一点?

或者是否应该使用另一个 Windows Shell COM 接口?

我从未尝试过这个,但你应该能够在你的动词键中将 CommandState­Handler(未记录?)设置为实现 IExplorerCommandState.

的 CLSID

您可能还会考虑实施 IExplorerCommand 而不是 IExecuteCommand+IExplorerCommandState...

您还可以根据对 属性 系统的 AppliesTo 值的查询来隐藏动词。