0

下面是我的代码

AutomationElementCollection panes = AutomationElement.RootElement.FindAll(TreeScope.Children, paneCondition);

基本上,上面的代码会拉取我桌面上所有打开的窗口。在 Visual Studio IDE 中使用 Debug 在本地运行时工作正常,但部署到 IIS 时出现问题。

当在 IIS 中时,AutomationElementCollection 为空,而在 Visual Studio 中运行时,集合中的项目数不为 0。

现在我该如何解决这个问题?任何帮助,将不胜感激 :)

顺便说一句,我想做的是自动登录 Windows 安全提示。

4

1 回答 1

0

我要在这里站出来,说 simmon mourier 是正确的,但假设他们是这样做的方法,我会尝试这样的事情来确认窗口根本无法归还。

这将返回您传递给它的所有子自动化元素。

    /// <summary>
    /// Returns all children elements of an automation element.
    /// </summary>
    public virtual List<AutomationElement> GetAllAutomationElements(AutomationElement aeElement)
    {
        AutomationElement aeFirstChild = TreeWalker.RawViewWalker.GetFirstChild(aeElement);

        List<AutomationElement> aeList = new List<AutomationElement>();
        aeList.Add(aeFirstChild);
        AutomationElement aeSibling = null;

        int count = 0;
        while ((aeSibling = TreeWalker.RawViewWalker.GetNextSibling(aeList[count])) != null)
        {
            aeList.Add(aeSibling);
            count++;
        }

        return aeList;
    }

然后将列表吐出到文件或其他内容中,以便您在登录后确认运行时实际可用的内容。

于 2014-10-20T09:29:48.023 回答