AutomationElement还活着吗?

时间:2015-05-12 08:40:23

标签: c# .net ui-automation microsoft-ui-automation automationelement

我正在使用Microsoft UI自动化并遇到一些问题,其中之一就是我想知道AutomationElement是否还活着。更确切地说,我想检查一个窗口是否已经关闭。我认为这是这类问题的最常见情况,我尝试了不同的场景,最后得到一个解决方案,我尝试访问该元素的不同属性,看看它是否抛出了ElementNotAvailableException。我还偶然发现了一个名为IsOffscreen的属性,这在这种情况下似乎非常有用。但是,由于我在网上找不到太多关于此内容的信息,我想知道是否有更好的解决方案。我对最后几天的框架不太满意,因为它对我来说似乎非常不稳定(特别是在查找AutomationElement时)。也许你可以帮助我在实施中获得更多的专业知识。

非常感谢

马塞尔

2 个答案:

答案 0 :(得分:1)

在获取AutomationElement之前,您可能会捕获ElementNotAvailableException

try 
{
  var info = automationElement.Current;
  var name = info.Name;
}
catch (ElementNotAvailableException) {}

答案 1 :(得分:1)

我会把它包装在扩展名中:

public static bool Alive(this AutomationElement ae)
{
    try
    {
        var t = ae.Current.Name;
        return true;
    }
    catch(ElementNotAvailableException)
    {
        return false;
    }
}