C# 在系统托盘中运行应用程序,并设置剪贴板中复制的热键

C# 在系统托盘中运行应用程序,并设置剪贴板中复制的热键,c#,windows,winforms,clipboard,C#,Windows,Winforms,Clipboard,我想要一个没有任何可查看表单的应用程序(仅用于在系统托盘中运行)。 现在,当用户按下热键(例如“F11”)时,将所选文本从应用程序复制到剪贴板,然后我想以定义的格式打印文本。 现在我不知道该怎么做 请帮帮我 非常感谢您需要使用包含3个主要部分的挂钩: 系统钩子允许您插入一个回调函数 截获某些Windows消息(例如,与鼠标相关的消息) 本地系统钩子是仅当 指定的消息由单个线程处理 全局系统钩子是在指定消息被调用时调用的系统钩子 由整个系统上的任何应用程序处理 除了您的需求之外,您还需要使用全

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

请帮帮我


非常感谢

您需要使用包含3个主要部分的挂钩:

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

  • 本地系统钩子是仅当 指定的消息由单个线程处理

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

除了您的需求之外,您还需要使用全局系统钩子。你可以使用这个有用的工具

更新:

我认为检测键盘按键或将一个无格式的应用程序放入系统托盘(通过这个)是简单的,而且你可以使用
system.Windows.Forms.clipboard.SetText(“你好,剪贴板”)轻松地将文本设置到剪贴板但是,什么文本?这才是有趣的地方。如果你想从任何包含可选择文本的打开应用程序中获取所选文本,你需要以不同的方式。我找了一点,找到了这个值得尊敬的

再次更新:

正如您在评论中提到的,链接的指南不适合您的需求。我几分钟前刚刚测试过它,并用它编写了一个示例应用程序。我已经从活动窗口中选择了控件文本作为结果,这意味着它也不会有帮助

再次稍微搜索,结果如下:

  • 一般来说,无法获取“任意”选定文本的值,因为程序可以以其认为合适的任何方式重新实现其自己版本的Win32控件,并且您的程序不可能期望与所有这些控件一起工作

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

注意:正如我在示例和相关问题中看到的,这个解决方案不是很酷,除了其他实验之外,它不适用于所有应用程序(如Firefox等)

任何有用的引语都会增加答案。这就是我给你的一切


幸运的话

请查看此投票结束,因为您没有对您尝试过的内容或失败的地方进行研究。查看清单了解更多信息:想讨论代码吗?添加一些…谢谢你的回复,我试图在第二个链接的情况下获得选中的文本,但它没有工作。你有其他方法来做到这一点吗?