如何使用UIAutomation或White启用按钮

我正在尝试自动化安装向导,我需要单击未启用的按钮。 我知道这可以使用Windows消息完成,但我想知道是否已经支持White或UIAutomation 作为参考,这不起作用:
var invoke =  (System.Windows.Automation.InvokePattern)setup.button("Next >").AutomationElement.GetCurrentPattern(System.Windows.Automation.InvokePattern.Pattern);  
invoke.Invoke();
这也不是
var guiAutomation = new API_GuiAutomation("msiexec");  
var setup = guiAutomation.windows()[0]; 
setup .bringToFront(); 
setup .button("Next >").mouse().click();  // this will work
setup .button("Next >").mouse().click();  // this will not work since the button is not enabled
上面的示例使用我添加到O2平台的基于白色的API(请参阅此处自动记事本的示例)     
已邀请:
我不相信你能用UIAutomation做到这一点:你所要求的是超出UIAutomation框架的范围。它旨在让您使用与鼠标和键盘相同的代码。它不是设计为操纵UI状态的一般方法。     
你可以直接调用Win32函数EnableWindow,它发送一条Windows消息,就像你说的那样。 我在UIAutomation中查找了该功能,但没有找到它。     
如果你正在使用怀特 Mouse.Instance.Location = this.ClickablePoint; Mouse.LeftDown(); Mouse.Instance.Location = point; Mouse.LeftUp();     
单击启用的按钮更快地与故障注入技术相关,而不是正常执行应用程序。 此按钮是否在应用程序的生命周期的其余部分禁用,或者稍后将启用?如果是后者,为什么不等待启用?通过在element.Current.IsEnabled或Wait-UIAButton cmdlet上使用do / while。     

要回复问题请先登录注册