AutomationElement child = walker.GetFirstChild(el);
使用 Windows 自动化我如何模拟左键单击 Child ?
AutomationElement child = walker.GetFirstChild(el);
使用 Windows 自动化我如何模拟左键单击 Child ?
Invoke
您可以通过以下方式发送鼠标事件,而不是发送鼠标事件InvokePattern
:
public void InvokeAutomationElement(AutomationElement automationElement)
{
var invokePattern = automationElement.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;
invokePattern.Invoke();
}
尝试:
AutomationElement child = walker.GetFirstChild(el);
System.Windows.Point p = child.GetClickablePoint();
Mouse.Move((int)p.X, (int)p.Y);
Mouse.Click(MouseButton.Left);
链接:
AutomationElement.GetClickablePoint 方法
在没有真正使用鼠标的情况下模拟 WPF 控件上的鼠标 Enter/Move/Leave
编辑评论
请参阅此链接:
如果控件具有“ClickablePoint”,则可以使用此代码
System.Windows.Point p = theButton.GetClickablePoint();
AutoItX3Lib.AutoItX3Class au3;
au3 = new AutoItX3Lib.AutoItX3Class();
au3.AutoItSetOption("MouseCoordMode", 0);
au3.MouseClick("LEFT", (int)p.X, (int)p.Y, 1, -1);
其中AutoItX3Lib是 AutoIt 的 C# API