An example of UIAutomation
Not logged in
This forum is sponsored by Mistachkin Systems.
Eagle: Secure Software Automation
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
}
```