UIAutomation学习

  1. 在另一线程中执行Find等操作
    代码
    IntPtr handle  =  frm.Handle;

    Action act  =  ()  =>
    {
         UIAutomationMapping mapping  =   new  UIAutomationMapping(handle);

        
    foreach  (AutomationElement item  in  mapping.CheckedListBoxColumnNamesRows)
        {
            item.SetFocus();
            SendKeys.SendWait( "   " );   //  Send a {SPACE} to check the checkbox. 
        }

        InvokePattern aeOkButtonClick  =  (InvokePattern)mapping.ButtonOk.GetCurrentPattern(InvokePattern.Pattern);
        aeOkButtonClick.Invoke();
    };

    act.BeginInvoke( null null );
  2. 查找列表:
    this.CheckedListBoxColumnNames.FindAll(TreeScope.Descendants,
                        new PropertyCondition(
                            AutomationElement.ControlTypeProperty,
                            ControlType.ListItem));
  3. TogglePattern似乎对CheckListBox不起作用, 可用如下代码代替:
    item.SetFocus();
    SendKeys.SendWait(" ");  // Send a {SPACE} to check the checkbox.

你可能感兴趣的:(automation)