我需要监控Google Chrome网址文本框中的更改。我有代码找到url并正确读取它。
AutomationElement elementx = element.FindFirst(System.Windows.Automation.TreeScope.Descendants, conditions);
return ((ValuePattern)elementx.GetCurrentPattern(ValuePattern.Pattern)).Current.Value as string;
elementx是url文本栏,返回了url
现在 我需要监视url文本栏以查看文本更改。我在stackoverflow上找到了一些代码,但它不起作用。 Handling ProgressBar's Value change with UIAutomation
我使用了一个名为accevent.exe的应用程序,并且看到确实可以监视文本更改,如截图所示。 所以基本上我需要一种方法来监控和报告对URL文本的更改。
答案 0 :(得分:0)
ValuePattern chromeValuePattern;
AutomationPropertyChangedEventHandler propChangeHandler = null;
chromeValuePattern = elementx.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
propChangeHandler += new AutomationPropertyChangedEventHandler(OnPropertyChange);
Automation.AddAutomationPropertyChangedEventHandler(elementx,
System.Windows.Automation.TreeScope.Subtree, propChangeHandler,
AutomationProperty.LookupById(UIA_PropertyIds.UIA_ValueValuePropertyId));
private void OnPropertyChange(object src, AutomationPropertyChangedEventArgs e)
{
AutomationElement sourceElement = src as AutomationElement;
if (e.Property == AutomationProperty.LookupById(UIA_PropertyIds.UIA_ValueValuePropertyId))
{
Debug.WriteLine(e.NewValue);
}
else
{
}
}