自動化する必要のある古いレガシーアプリケーションがあります。MDIウィンドウを使用します。
UIAutomationを使用しており、各MDI子ウィンドウに適切なAutomationElementを正常に取得できます。私にできないことは、その要素に焦点を当てることです。
これが私が試したいくつかのサンプルコードですが、失敗します:
var desktop = AutomationElement.RootElement;
var dolphin = desktop.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty,
"Dolphin for Windows",
PropertyConditionFlags.IgnoreCase));
dolphin.SetFocus();
var workspace = dolphin.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty,
"Workspace",
PropertyConditionFlags.None));
var childWindow = workspace.FindFirst(TreeScope.Children, new
PropertyCondition(AutomationElement.NameProperty, "Sharp "));
childWindow.SetFocus();
このコードの最後の行はSystem.InvalidOperationExceptionで失敗します
実験して、childWindowでコントロールを見つけ、その上でSetFocusを呼び出してみました。正しいコントロールにフォーカスを正しく設定しましたが、MDIウィンドウを前面に表示しませんでした。
何か案は?