У меня есть приложение С#, которое правильно реагирует на глобальную горячую клавишу. Я хочу получить выделенный текст из другого приложения, которое имеет фокус, если нажата глобальная горячая клавиша.
Я протестировал родной Win32 Api, затем SendKeys
(CTRL + C, буфер обмена,...), а теперь Microsoft UI Automation! Проблема в том, что это работает только в Блокноте, но не в 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;
}