我正在做一个C#
windows窗体应用程序,它使用System.
Windows.Automation类自动化另一个win32应用程序.
我需要阅读或交互一些元素,但是UISpy找不到这些字段,它只找到父容器面板.
例如,下面的代码块应返回许多工具条按钮,但不起作用:
var mainWindow = AutomationElement.RootElement.FindChildByNamePart("Back Office Control");
var mainWindowChildren = mainWindow.FindAll(TreeScope.Children, Condition.TrueCondition);
var toolBarPanel = mainWindowChildren[1];
var toolBarItens = toolBarPanel.FindAll(TreeScope.Children, Condition.TrueCondition);
还有另一种方法吗?
最佳答案 正如您刚刚发现的那样,工具条按钮实际上并不是Windows消息传递世界中的单独控件.菜单项和其他一些控件也是如此.
要使用Windows消息进行单击,您需要将WM直接发送到工具栏,而不是按钮,例如TB_PRESSBUTTON(http://msdn.microsoft.com/en-us/library/windows/desktop/bb787389(v=vs.85).aspx).
您必须使用针对工具栏的SendMessage WinAPI函数(您可以像往常一样获取hWnd),TB_PRESSBUTTON作为消息类型,命令标识符作为wParam,1作为lParam.