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
}
```