【问题标题】:Add item to right click menu将项目添加到右键菜单
【发布时间】:2009-09-04 22:35:16
【问题描述】:

我想在右键菜单中添加一个项目(如 TortoiseSVN 或 7zip 等...)

我不知道该怎么做,也不知道具体叫什么。

如果此选项仅在我的程序运行时可用,那就更好了。

用例:

用户将在网页上选择一些文本(或 word 文档或他们计算机上的任何内容)并右键单击,从菜单中选择我的项目,然后我的子 DoSomething(string myString) 将运行。

编辑:

我目前正在 XP 上开发,但我希望这个程序可以在 Vista/Win7 上运行

【问题讨论】:

  • 我认为.NET不支持全局挂钩,必须在经典dll中这样做。
  • 这称为上下文菜单
  • 这不是问题 :) 问题是关于 COM/Shell/Win32 API
  • 根据我对 Factor Mystic 的回答的评论:谢谢我做了更多的研究,并决定在 IE 或 word 等中实现此功能的技术成本太高了。我已经学到了很多关于 shell 扩展的知识,并且将在这个或我的下一个项目中使用它们。

标签: .net winforms


【解决方案1】:

您需要使用 (Explorer) Shell Extensions。 它们是用 COM 编程的。

COM 对于非托管编程至关重要。因此,如果您想了解更多有关 Windows 工作原理的信息,请获取一本书并学习它。将项目添加到菜单就是一个例子。

可能有你想要的 .Net 包装器,但我还不知道它们。

【讨论】:

  • 谢谢,我对学习 COM 的知识并不是很感兴趣,但我愿意阅读它,你知道有什么好的在线示例吗?
【解决方案2】:

这取决于您想要上下文菜单项的位置以及总体用途。到目前为止,大多数答案都是针对 Explorer 中的上下文菜单,但是如果您想根据问题状态更改程序内部的上下文菜单,这将变得更加困难和/或不可能。

但是,在没有 shell 扩展名的情况下,可以通过 registry manipulation3rd party utilities 或使用 COM 将上下文菜单项添加到资源管理器中的文件类型。

【讨论】:

  • 谢谢我做了更多的研究,并决定在 IE 或 word 等中实现此功能的技术成本太高了。我已经学到了很多关于 shell 扩展的知识,并且将在这个或我的下一个项目中使用它们。
【解决方案3】:

我相信这可以通过在系统注册表中添加/删除条目来实现。

一个实际的例子可以在这里找到:http://www.jfitz.com/tips/rclick_custom.html

【讨论】:

  • 截图用的是Win95 太可怕了 ;-) 不过我会看看的 thx
  • 如果是 Win95,它可能不再适用于 Vista/7... 我注意到例如 7-Zip shell 集成在 7 上不起作用。
  • 糟糕,抱歉,这里有点晚了,错过了 ;) 我从旧的 Win32 天开始就知道这些东西是在注册表中完成的,希望你能进一步研究 Vista/ 的关键所在七:)。
【解决方案4】:

他们被称为Shell Extensions

嗯,排序 - shell 扩展可以做的不仅仅是修改上下文菜单,但如果你想对菜单做任何不平凡的事情,那么你会想要编写一个 shell 扩展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    相关资源
    最近更新 更多