将项目添加到上下文菜单并为这些项目添加自定义操作

3
我该如何为文件夹的上下文菜单添加菜单项?我不想通过注册表来实现。我希望将其与我的应用程序安装程序集成,安装应用程序时应添加上下文菜单项。单击这些菜单项时,应调用我的应用程序方法(类似于WinRAR的操作)。
谢谢。

我猜你是指资源管理器上下文菜单? - Marc Gravell
付费、预制的解决方案怎么样:http://www.contextmenu.net/ - Marc Gravell
是的,@marc,使用现成的解决方案会更好一些,否则这将是一个有点棘手的问题! - TheVillageIdiot
是的,我指的是资源管理器上下文菜单。但我只希望在右键单击文件夹时才可见。 - lostInTransit
我了解在托管代码中编写shell扩展曾经非常不安全(http://blogs.msdn.com/oldnewthing/archive/2006/12/18/1317290.aspx,http://www.codeproject.com/KB/shell/ratingcolumn.aspx)。另请参见:https://dev59.com/DEXRa4cB1Zd3GeqPqUMN,一位用户提到该问题已得到解决,但未提供任何参考资料,因此我对此持谨慎态度。是否有人对此问题有最新消息? - RedGlyph
1个回答

2

有两种方法可以将项目添加到上下文菜单中。我不确定为什么您不想使用注册表,因为这是最简单的方法。如果需要,您可以让安装程序自动添加或删除注册表键。无论哪种方法,都将使用注册表,因为注册Shell扩展涉及添加注册表键。

注册表

这种方法很容易,因为它只涉及添加一些注册表键。缺点是您不能在其中放置任何逻辑。您可以在此处阅读有关它的信息。如果您正在使用DDE执行菜单项,则可以获得更多控制权。请参见此处以获取DDE示例。

Shell扩展

这种方法需要更多的工作,但是你可以完全通过代码控制上下文菜单。你需要编写一个DLL,实现IContextMenu(或其他接口),并将该DLL注册到Windows资源管理器中。你可以在这里阅读相关信息,并查看这里的示例。你还可以尝试使用第三方库,如ContextMenu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接