任意の Windows アプリケーションで自動化を行うアプリケーションがあります。私はそれをテストするためにメモ帳を使用しています。
この自動化中に、コードからイベントを呼び出す必要があります。現在、最も一般的なInvokePatternとExpandCollapsePatternの 2 種類のイベントをサポートしています。
テストを行うためにリモート デスクトップできるコンピューターを使用します。しかし、それは奇妙です。リモート デスクトップ経由でコンピューターに接続すると、アプリケーションは正常に動作します。コンピューターから切断すると、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" になります。
編集:なぜ私が反対票を投じたのか、これがどのように悪い質問なのかを知ることができますか? リモートデスクトップが閉じられているときにのみ失敗するように見えるため、何が起こっているのか本当に混乱しています。これが本当にばかげた質問で、答えを知っておく必要がある場合は、説明してから反対票を投じてください。
デスクトップと対話するプロセスは、Windows サービスではありません。これは、コンピューターにリモート デスクトップした後に起動するアプリケーションです。デスクトップをロックしているからですか?
Ubuntu で「Terminal Server Client」を使用して Windows マシンにログインしています。このアプリケーションの閉じるボタンを押すと、デスクトップがロックされますか?