在系统托盘中运行应用程序并设置热键以便在剪贴板中复制

时间:2013-07-31 06:37:26

标签: c# windows winforms clipboard

我想要一个没有任何可查看形式的应用程序(仅适用于在系统托盘中运行)。 现在,当用户按下热键时(例如" F11"),将选定的文本从应用程序复制到剪贴板,然后我想以定义的格式打印文本。 现在我不知道怎么能这样做。

请帮帮我......

非常感谢

1 个答案:

答案 0 :(得分:1)

你需要使用包含3个主要部分的钩子:

  • 系统挂钩允许您插入一个回调函数 拦截某些Windows消息(例如,与鼠标相关的消息)。

  • 本地系统挂钩是一个系统挂钩,只有当它被调用时才会被调用 指定的消息由单个线程处理。

  • 全局系统挂钩是指定消息时调用的系统挂钩 由整个系统上的任何应用程序处理。

除了您的要求,您还需要使用全局系统挂钩。您可以使用此有用的link

<强>更新

我认为检测键盘按键是一个简单的故事方面,或者在系统托盘中放置一个无形应用程序(通过此LINK),您也可以使用System.Windows.Forms.Clipboard.SetText("Hello, clipboard");轻松地将文本设置为剪贴板但是,什么文字?这是兴趣点。如果您想从包含可选文本的任何打开的应用程序中获取所选文本,您需要采用不同的方式。我对它进行了一些搜索并得到了这个可敬的LINK

再次更新

正如您在评论中提到的,链接指南无法满足您的需求。我几分钟前测试了它并使用它编写了一个示例应用程序。我从活动窗口中获得了所选的控制文本作为结果,这意味着它也会有帮助。

再次搜索一下,结果如下:

  • 一般来说,无法获取“任何”所选文本的值是不可能的,因为程序可以以他们认为合适的方式重新实现自己版本的Win32控件,以及你的程序不可能期望与它们一起工作。

  • 您可以使用 Microsoft UI Automation ,这是适用于所有操作系统的Microsoft Windows新辅助功能框架。 UI Automation提供对桌面上大多数用户界面(UI)元素的编程访问,使屏幕阅读器等辅助技术产品能够向最终用户提供有关UI的信息,并通过标准输入以外的方式操作UI。 UI Automation还允许自动化测试脚本与UI交互。

注意:正如我在周围的示例和问题中看到的那样,此解决方案并不是很酷,除了其他实验之外,它不适用于所有应用(例如Firefox,等)。

任何有用的报价都会增加答案。这就是我为你所拥有的一切。

幸运