問題タブ [microsoft-ui-automation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
user-interface - 特定の時点で Windows UI オートメーション ツリーをダンプする方法はありますか?
私が開発したいくつかのスクリプト (Windows UI オートメーション サポートを使用して GUI オブジェクトを識別するスクリプト) をデバッグしようとしていますが、ツリー内で特定のコントロールが見つからないために断続的に失敗します。テストしているウィンドウの状態を確認するためにスクリーンショットも使用していますが、コントロールは GUI にあるようですが、ツリー内を検索しても見つかりません (数秒間スリープした後でも)。inspect.exe を使用してツリーを確認すると、オブジェクトが存在します。
後で分析するためにそのツリーをダンプする方法はありますか? 今まで見つけた唯一の方法は、ツリー全体を再帰的にクロールすることですが、これは非常に時間がかかるため実行できません。
c# - CurrentControlType プロパティから UI 要素の ControlType を知る方法
基本的に、現在行っているいくつかの UI 作業に UIAutomationClient.Interop.dll を使用していますが、次の問題に直面しています。
- コントロール タイプを知りたい UI 要素があります。
- UIAutomationClient.Interop.dll は次のプロパティを公開します: IUIAutomationElement::CurrentControlType プロパティ
- 上記のプロパティは、ControlType オブジェクトではなく、コントロール タイプ ID を表す Int を返します。
質問:
- ID を知るだけで UI 要素の ControlType を知るにはどうすればよいでしょうか? 他に有益な情報を見つけることができませんでした。
注:
UIAutomationTypes.dll を使用して ControlType オブジェクトを定義しています
何か案が?
.net - Microsoft UI オートメーションを使用して Firefox の開いているすべての URL を取得する
Firefox タブで開いているすべての URL を取得しようとしています。
これは私がこれまで行ってきたことです。コードはすべての Firefox の URL を取得しますが、開いている各ドキュメントからすべての URL を取得します。たとえば、フォーラムから埋め込まれた YouTube の URL などです。興味がある。
どうすればそれを修正できますか?.
また、例外をスローします
タイプ 'System.InvalidOperationException' の初回例外が Microsoft.VisualBasic.dll で発生しました
ここで文字列としてキャストしようとすると:
...しかし、コントロールを適切に「フィルタリング」して適切なURLを取得できれば、問題は解決するはずです。
また、このコードのもう 1 つの問題として、UI オートメーションにより、Firefox プロセスがタスクバーから最小化できなくなります。これらの UI オートメーション命令を実行した後、Firefox タスクバー ボタンを押してウィンドウを最大化/最小化することができません。
使用法:
c# - ホワイトは、すでに実行中のアプリケーションでどのように機能しますか?
アプリケーションを自動化するために testStack/White ライブラリを使用しています。現在は問題なく動作していますが、アプリケーションが既に実行されている場合は例外がスローされます。たとえば、アプリケーションがすでに実行されている場合は、それを呼び出さないでください。つまり、このコード行をスキップできます
White に関する適切なドキュメントは見つかりませんでした。どんな助けでも大歓迎です。
accessibility - UI オートメーションはすべての LegacyIAccessible プロパティにアクセスできますか? (inspect.exe)
inspect.exe を見ると、次のようないくつかのプロパティがあります
HelpText-PropがLegacyIAccessible.Help-Propと何らかの形で異なる可能性があるかどうかを知りたいですか? (おそらく特殊なケースで?!)さらに、すべての LegacyIAccessible-Prop が UI オートメーションを介して 100% 利用できるとしたら、それは興味深いことです。 乾杯
winforms - プログラムで別のアプリケーションのウィンドウをアクティブにした場合、フォーカスが失われたことを検出できますか?
私は WinForms アプリケーションを試みている Web 開発者です。
返信するときは、私のアプリケーションの目的が「ベスト プラクティス」であるかどうかなどについてコメントしないでください。良くも悪くも、これは私が書く必要のあるアプリケーションであり、「理由」を説明するために時間を無駄にすることはできません。 . (1)私がやろうとしていることは可能ですか(2)私がやろうとしていることを達成するための「最良の」方法は何ですか?
そこで、私がやろうとしていることは次のとおりです。ベンダー アプリケーションからデータを読み取り、特定のレコードをエンド ユーザーに表示し、エンド ユーザーがレコードを別のベンダー アプリケーションに「転送」することを選択できるようにする WinForms アプリケーションを作成する必要があります。ハングアップ...宛先システムはAPIもsprocも公開せず、GUIに入力する以外に、データを挿入するための「適切な」方法を提供しません。(これについては私を信じてください。3 人のチームがこれを自動化する可能性をすべて調査しました)
したがって、この WinForms アプリは Microsoft.VisualBasic.Interaction.AppActivate(string) を利用し、宛先システムの入力ウィンドウのフィールドにデータを直接挿入します。宛先システムには特定のフィールドに関する F1 ヘルプがあるため、フィールドにフォーカスを移して「F1」を押すか、これらのフィールドのいずれかに無効なデータを入力すると、「ヘルプ」という名前の子ウィンドウがポップアップしてガイダンスが提供されます。 .
したがって、私のアプリはプラグインし、SendKeys.SendWait(string) を使用してこのアプリケーションのフィールドにデータを書き込みます。その後、無効なデータが検出され、ヘルプ ウィンドウがポップアップし、アプリは残りのデータを書き続けます。 、しかし今では、そのウィンドウにフォーカスがあるため、ヘルプ ウィンドウの 1 フィールドにすべてが書き込まれています。
百万ドルの質問...
WinForms アプリから、宛先システムでヘルプ ウィンドウがアクティブになっていることを検出して、それを回避する方法はありますか?
アップデート
このアプリケーションでの最初の試みは、UIAutomationClient ライブラリを使用しました。ターゲット ウィンドウをアクティブにして、最初のフィールドに書き込むことができませんでした。一日格闘した後、私は代替品を探し始めなければなりませんでした。