2

を使用して、マウスを動かしてクリックをシミュレートすることなくAutomationElement、クリックを に送信する方法はありますか? 私にとってはまだ新しいです-私が理解している限り、それがサポートされていない限り(TabItemはサポートしていません)、コントロールの場所を見つけてマウスをシミュレートするルートをたどる必要があります。私はそのコードが機能しています(以下を参照)-これが私のオプションであるかどうかに興味があります。TabItemAutomationElementInvokePattern

AutomationElement tabControl = GetControl(window, "NOTEBOOK");
AutomationElement tabGeneral = GetControl(tabControl, "FM_STAFF_SUB_P1");

AutomationElementCollection tabs = GetAllTabs(window, tabGeneral);

System.Windows.Point p = tabs[1].GetClickablePoint();

MoveMouse((int)p.X, (int)p.Y);
ClickMouse();

ありがとうございました。

4

2 に答える 2

1
  1. 試すtab.SetFocus()
  2. サポートされているすべてのパターン ( tab.GetSupportedPatterns()) を取得し、このタブの実装でサポートされているものを確認します。SelectionItemPattern をサポートする必要があるため、次を使用します。((SelectionItemPattern)tab.GetCurrentPattern(SelectionItemPattern.Pattern)).Select()
  3. タブをナビゲートするためにウィンドウを使用SendKeysします (ほとんどの場合、それらの間をナビゲートするためのホット キーがあります。タブが選択されているかどうか、各ナビゲーションの後に確認することで組み合わせることができます。
  4. 上記のすべてが失敗した場合、マウスクリックが唯一の選択肢だと思います。
于 2015-09-11T05:39:20.833 に答える
1

タブ項目にホットキーを追加する際にも同様の問題がありました。私の場合、タブ項目を選択するだけでフォーカスが与えられますが、動的に生成されたときにタブのコンテンツは表示されません。あなたの質問を誤解しない限り、この例は TabItemAutomationPeer でタブ項目のクリックをシミュレートします。

        //get the TabItem
      TabItem tabItem = (TabItem)sender; //or however you are getting it.
    
        //get the TabControl
      TabControl tabControl = UIHelper.FindLogicalParent<TabControl>(tabItem); //or however you are getting it.
      
        //do that magic
      tabItem.IsSelected = true; 
      TabControlAutomationPeer tabControlAutomationPeer = new TabControlAutomationPeer(tabControl);
      TabItemAutomationPeer tabItemAutomationPeer = new TabItemAutomationPeer(tabItem, tabControlAutomationPeer);
      tabItemAutomationPeer.SetFocus(); //works like a click
于 2020-08-11T22:25:21.943 に答える