我正在尝试创建一个应用程序,该应用程序将在按下键盘快捷键时处理选定的文本。我使用此方法的一部分来获取当前选定的文本(似乎没有其他方法可以从任何应用程序获取选定的文本:
string GetSelectedText()
{
var oldClip = Clipboard.GetText();
SendKeys.SendWait("^c");
string selection = Clipboard.GetText();
Clipboard.SetText(oldClip); // preserve clipboard
return selection;
}
我的第一个想法是使用系统托盘图标。单击时,图标将使用上述方法获取当前选择,并对其进行处理。但是,像这样使用剪贴板需要应用程序处于焦点位置,而单击系统托盘图标会使该图标成为焦点,然后该方法才能运行。
我的下一个想法是使用全局键盘快捷键。我遇到了这篇关于获取全局热键的文章,它实际上可以收听键盘组合,但只能在一个应用程序中,这不是我想要的 - 我想在任何应用程序中收听键盘快捷键。
我已经阅读了这篇文章(来自这个答案),它确实设法在任何应用程序中监听键,但一次只能监听一个键(例如单个 LControl、Shift 或 C 等)。
我的问题是:我如何才能监听某个组合键,无论是什么应用程序都处于焦点,并执行上面的方法来获取当前的选择?
如果有更好的方法来检索当前选择,或者如果可以在应用程序不在焦点时完成,那么解释如何可能的答案也值得赞赏;然而,主要关注点是在所有应用程序中监听键盘组合。