Yes, I'm using such tools. Those can find the button I wanted to click. But there seems to be a case where a button cannot be found via UIAutomation. By the way, I tried to enumerate elements which supports InvokePattern. But this line failed to create a condition. I tried 1, true, True but all failed. ``` set cond(invoke) [object create PropertyCondition $prop(invoke) 1] # =>System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: PropertyCondition value for property 'AutomationElementIdentifiers.IsInvokePatternAvailableProperty' must be 'Boolean'. at System.Windows.Automation.PropertyCondition.Init(AutomationProperty property, Object val, PropertyConditionFlags flags) at System.Windows.Automation.PropertyCondition..ctor(AutomationProperty property, Object value) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Eagle._Commands.Object.Execute(Interpreter interpreter, IClientData clientData, ArgumentList arguments, Result& result) ``` Full script ``` package require Garuda puts [eagle version] puts [garuda packageid] eagle { object load UIAutomationClient object load UIAutomationTypes object load UIAutomationProvider set assembly [object load -alias UIAutomationClientsideProviders] object import System.Windows.Automation object invoke ClientSettings RegisterClientSideProviderAssembly [$assembly GetName] set prop(name) [object invoke AutomationElement NameProperty] set prop(invoke) [object invoke AutomationElement IsInvokePatternAvailableProperty] set patt(invoke) [object invoke InvokePattern Pattern] set elem(root) [object invoke -alias AutomationElement RootElement] set cond(elan) [object create PropertyCondition $prop(name) "ELAN Instrument Control Session"] set elem(elan) [$elem(root) -alias FindFirst Children $cond(elan)] set cond(tbar) [object create PropertyCondition $prop(name) "Elan Toolbar"] set elem(tbar) [$elem(elan) -alias FindFirst Children $cond(tbar)] set cond(invoke) [object create PropertyCondition $prop(invoke) 1] set elems(invoke) [$elem(tbar) -alias FindAll Children $cond(invoke)] $elems(invoke) Count } ```