我有一个正确响应全局热键的 C# 应用程序。如果按下全局热键,我想从另一个具有焦点的应用程序中获取选定的文本。
我测试了本机 Win32 Api,然后SendKeys
(CTRL + C,剪贴板,...),现在是 Microsoft UI 自动化!问题是,这仅适用于记事本,但不适用于 Internet Explorer、Word 或其他应用程序。
我认为必须有比我拥有的代码更好的解决方案。我读到发送CTRL + C
应该可以正常工作,但这也只能在记事本中使用。
这是我在触发全局热键时调用的方法:
public String GetSelectedTextFromApp()
{
String output = "";
AutomationElement focused = AutomationElement.FocusedElement;
object pattern;
TextPatternRange[] trs;
if (focused.TryGetCurrentPattern(TextPattern.Pattern, out pattern))
{
TextPattern tp = (TextPattern)pattern;
trs = tp.GetSelection();
output = trs[0].GetText(-1);
}
return output;
}