我有一个应用程序,可以对任意Windows应用程序进行自动化。我一直在使用记事本进行测试。
在这个自动化过程中,我必须从代码中调用事件。目前,我支持两种类型的事件,因为它们似乎是最常见的:InvokePattern和ExpandCollapsePattern。
我使用的是一台可以远程桌面连接的计算机进行测试。但是很奇怪,当我通过远程桌面连接到计算机时,应用程序可以正常工作。当我断开与计算机的连接时,我的代码停止使用ExpandCollapsePattern(InvokePattern仍然可以正常工作)。我会收到InvalidOperationException异常。
文档说,只有在节点被标记为LeafNode时才会抛出此异常。那么,为什么使用远程桌面连接会导致我收到InvalidOperationException异常呢?
以下是我目前用于执行事件的代码。
在这个自动化过程中,我必须从代码中调用事件。目前,我支持两种类型的事件,因为它们似乎是最常见的:InvokePattern和ExpandCollapsePattern。
我使用的是一台可以远程桌面连接的计算机进行测试。但是很奇怪,当我通过远程桌面连接到计算机时,应用程序可以正常工作。当我断开与计算机的连接时,我的代码停止使用ExpandCollapsePattern(InvokePattern仍然可以正常工作)。我会收到InvalidOperationException异常。
文档说,只有在节点被标记为LeafNode时才会抛出此异常。那么,为什么使用远程桌面连接会导致我收到InvalidOperationException异常呢?
以下是我目前用于执行事件的代码。
ExpandCollapseState state =
patternMenu.Current.ExpandCollapseState;
if (state == ExpandCollapseState.Expanded)
patternMenu.Collapse();
else if (state == ExpandCollapseState.PartiallyExpanded ||
state == ExpandCollapseState.Collapsed)
patternMenu.Expand();
patternMenu是通过使用GetCurrentPattern从AutomationElement获得的ExpandCollapsePattern。
当我打印出该值时,ExpandCollapseState的当前值为“Collapsed”。
编辑:我能知道为什么我被downvote了吗?还有这是一个坏问题吗?当远程桌面关闭时,它似乎只会失败。如果这是一个非常愚蠢的问题,我希望得到解释,然后再downvote。
与桌面交互的进程不是Windows服务。它是我在远程桌面连接到计算机后启动的应用程序。是因为我锁定了桌面吗?
我正在Ubuntu上使用“终端服务器客户端”登录Windows机器。按下此应用程序的关闭按钮会导致桌面锁定吗?