我有一個C#應用程序,可以正確響應全局熱鍵。如果全局熱鍵被按下,我想從另一個具有焦點的應用程序獲取選定的文本。從另一個應用程序獲取選定的文本到自己的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;
}
檢查您想要從* MS Word *和* IE *中複製選擇的控件類型 - 可能發生那些* UI Automation *不支持的*非標準*控件。 –