【问题标题】:Add custom item to right click menu when user selects text当用户选择文本时,将自定义项目添加到右键菜单
【发布时间】:2013-01-16 19:56:37
【问题描述】:

我想在用户选择某些文本并单击鼠标右键时出现的菜单中添加一个自定义菜单项。我搜索了很多,但没有得到任何答案。也许我没有输入正确的关键字。

  1. 可以这样做吗?
  2. 如果可能,我希望在用户选择文本时对 Windows 中的所有应用程序执行此操作。是否有通用的方法,或者必须编写特定于应用程序的代码?

我正在使用 C#。

【问题讨论】:

  • 您可以添加一个全局挂钩来处理鼠标右键单击并弹出您自己的 ContextMenu... 但是如果我安装了您的应用程序并且它具有此功能,我可能不得不杀死您。 :)
  • glace:当某些应用程序对鼠标右键单击进行自定义处理时,也会出现无法预料的后果。例如游戏、建模软件等。我不确定是否可以检测到“右键单击以显示上下文菜单”。
  • 因此,我为什么说我必须杀了他。对 Windows 子系统有更多了解的人必须插话,因为我不确定游戏开发人员如何确保他们的输入首先被接受,而不是传播到其他进程。
  • 取决于什么类型的游戏。例如,我个人使用全局挂钩。还有用于基于 DirectX 的游戏的 DirectInput。我猜游戏玩家不会乐意尝试投掷手榴弹,只是发现 unlimit 的上下文菜单刚刚打开。以及尝试旋转视图的 3D 建模器。但它真的可以赢得今年最烦人的软件奖。

标签: c# .net windows


【解决方案1】:

我认为您不能在所有 Windows 应用程序中普遍做到这一点。但当然可以在您自己的应用程序中使用弹出菜单进行操作。

【讨论】:

    【解决方案2】:

    我还尝试了一种将项目添加到标准 ContextMenu 的方法,但失败了。在我看来,唯一的解决方案是将 TextBox 的 ContextMenuStrip 属性设置为 ContextMenuStrip 类的实例,并同时实现标准和自定义菜单项。很容易模仿标准操作,因为 TextBox 类提供了所有必需的方法:剪切、复制、粘贴、全选。

    【讨论】:

      【解决方案3】:

      通用方式基本上是编写“自定义外壳扩展”。 CodeProject 上有一篇关于如何做到这一点的文章。

      http://www.codeproject.com/Articles/174369/How-to-Write-Windows-Shell-Extension-with-NET-Lang

      另一种方法是将其构建到您的应用程序中。例如,您可能有一个文本编辑器,并且您想要突出显示一个单词并获得该单词的定义。为此,您需要实现一个上下文菜单。 CodeReview.StackExchange 详细介绍了非常基本的概念。

      https://codereview.stackexchange.com/questions/3983/c-programatically-creating-context-menu

      【讨论】:

        猜你喜欢
        • 2021-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-24
        • 1970-01-01
        • 2021-01-23
        • 2021-07-21
        相关资源
        最近更新 更多