MS UI Automation是MSAA技术的一个替代品:即让控件和应用程序具有更好的可达性(accessible)。简单来讲,它就是几个dll,提供了一套API和Interface,及其相应的模式,让软件的开发者遵循该模式去实现相应的interface,从而软件的使用者(不仅仅是客户,还包括例如测试人员想编写一些自动化测试代码来完成程序相关的业务逻辑)能更好的使用该软件。
Process[] procsChrome = Process.GetProcessesByName("chrome");
if (procsChrome.Length <= 0)
{
Console.WriteLine("未找到 chrome 进程");
}
foreach (Process proc in procsChrome)
{
// the chrome process must have a window
if (proc.MainWindowHandle == IntPtr.Zero)
{
continue;
}
AutomationElement root = AutomationElement.FromHandle(proc.MainWindowHandle);
Condition conditions = new AndCondition(
new PropertyCondition(AutomationElement.ProcessIdProperty, proc.Id),
new PropertyCondition(AutomationElement.IsControlElementProperty, true),
new PropertyCondition(AutomationElement.IsContentElementProperty, true),
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)
);
AutomationElement bar = root.FindFirst(TreeScope.Descendants, conditions);
if(bar != null)
{
var url = bar.GetCurrentPropertyValue(ValuePatternIdentifiers.ValueProperty).ToString();
Console.WriteLine(url);
}
}