我正在尝试创建一个应用程序,当按下键盘快捷键时,它将处理选定的文本。我使用了
this method
要获取当前选定的文本(并且似乎没有其他方法从任何应用程序获取选定的文本:
string GetSelectedText()
{
var oldClip = Clipboard.GetText();
SendKeys.SendWait("^c");
string selection = Clipboard.GetText();
Clipboard.SetText(oldClip); // preserve clipboard
return selection;
}
我的第一个想法是使用系统托盘图标。单击时,图标将使用上面的方法获取当前选择,并对其进行处理。但是,像这样使用剪贴板需要应用程序处于焦点,而单击系统托盘图标将使图标处于焦点,然后该方法才能运行。
我的下一个想法是使用全局键盘快捷键。我遇到了
this article
关于获取全局热键,以及
能够
实际上,听键盘组合,但只在一个应用程序中,这不是我想要的-我想通过
任何
应用程序。
我已经读过了
this article
(来自
this answer
)哪一个可以监听
任何
应用程序,但一次只能听一个键(例如单个lcontrol、shift或c等)。
这里我的问题是:无论什么应用程序处于焦点状态,我如何聆听某个键组合,并执行上面的方法来获得当前的选择?
如果有更好的方法来检索当前的选择,或者如果在应用程序不在焦点的情况下可以完成选择,那么也可以理解解释如何实现选择的答案;但是,主要焦点是在所有应用程序中侦听键盘组合。