問題タブ [automationelement]

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.

0 投票する
2 に答える
1728 参照

c# - AutomationElement はまだ生きていますか?

Microsoft UI オートメーションを使用していますが、AutomationElement がまだ生きているかどうかを知りたいという問題があります。より正確には、ウィンドウが閉じられているかどうかを確認したい。これは、この種の質問の最も一般的なケースだと思います。さまざまなシナリオを試した結果、要素のさまざまなプロパティにアクセスして、ElementNotAvailableException がスローされるかどうかを確認するソリューションにたどり着きました。また、IsOffscreen というプロパティも見つけました。これは、この場合に非常に役立つようです。それでも、ネット上でこれについてあまり見つけることができなかったので、より良い解決策があるかどうか知りたい. フレームワークが非常に不安定に見えるので (特に AutomationElement を見つける際に)、ここ数日はフレームワークにあまり満足していません。

どうもありがとうございました

マルセル

0 投票する
3 に答える
666 参照

c# - RangeValuePatternを介してAutomationElementからスピナーの値を取得する方法は?

スピナーの値を取得して、C# の AutomationElement を介して正しく入力されたことを確認しようとしています。私が現在行っていることはTryGetCurrentPattern、以下に示すようにそれを取得しようとしていますが、スピナーに別の値 (1 など) が表示されているにもかかわらず、値に対して 0.0 しか返されません。

valueRangePattern.Currentまた、スピナーが制限されているにもかかわらず、最大値と最小値のフィールドを見ると、常に 0.0 になっていることに気付きました。またValuePattern、スピナーから出ようとしましたが、if ステートメントには入りませんif (spinnerAutoEle.TryGetCurrentPattern(ValuePattern.Pattern, out pattern))。このようにスピナーから数値を取り出すことは可能でしょうか?

0 投票する
1 に答える
281 参照

c# - ブラウザーでの Word のホスティング - AutomationElement IsWindowPatternAvailable - 設定方法

MS-WordでドキュメントをホストWebBrowser controlしていWPF applicationます。

WebBrowser control、選択した MS-Word ドキュメントへのナビゲーション中に次のダイアログを表示します。

ファイルのダウンロード ダイアログ

を使用してプログラムでダイアログを閉じようとしAutomationElementます。コードは、テスト アプリケーションで問題なく動作します。コードを実際のアプリケーション (editファイル、show file with mail merge) に適用すると、そのmail merge部分だけがダイアログを正しく閉じています。それ以外の場合、ダイアログの AutomationElement が見つかりません。

ダイアログの AutomationElement にIsWindowPatternAvailable = false.

このプロパティを事前に設定する方法はありますか? それとも、ある場合には真で別の場合には偽である理由は?

テスト アプリケーションは、「標準 WPF アプリケーション」プロジェクトです。MainWindow.xaml.cs と MainWindow.xaml のみが含まれています。ボタンをクリックすると、次のように設定SourceされWebBrowserます。

backgroundCheck特定のダイアログを検索し、Openボタンを呼び出します

実際のアプリケーションはもう少し複雑で、 と を使用MVVMPRISM 5ますWCF。WCF を使用して、サーバーから Word ドキュメントを読み込みます。ファイルは %temp% に保存されます。

2 つViewModelの s (ドキュメントの編集 / マージされたドキュメントの表示、それぞれ a 内)は、s がサブスクライブするをdifferent module発行します。eventView

IsWindowPatternAvailableの助けを借りての違いを発見しましたinspect.exeIsWindowPatternAvailable = trueダイアログが and の直接の子である場合、Desktop見つけることができます。IsWindowPatternAvailable = falseにダイアログが表示されない場合でも、ダイアログをクリックしてダイアログのプロパティにアクセスできますTreeViewinspect.exeではinspect.exe、次のことがわかりますancestors

  • 対話そのもの
  • 要素クラス名: シェルの埋め込み
  • ウェブブラウザ
  • ViewEdit (ドキュメントを編集するためのビュー)
  • 応用

コードを使用して「マージ」モジュールでドキュメントを編集すると、ダイアログが正しく閉じられます。両方のモジュールが同じUIAutomationDLL (UIAutomationClient、UIAutomationProvider) を参照します。

同様の問題がここで言及されています: AutomationElement は Inspect.exe を使用して表示されますが、表示されません ... を使用しTreeWalkerたり、全体を検索したりすることSubtreeAutomationElement.RootElementできません。

IsWindowPatternAvailableそのように振る舞う理由の手がかりは大歓迎です。ファイルのダウンロード ダイアログを閉じる方法に関するその他の提案も歓迎します。

0 投票する
1 に答える
276 参照

c# - ハード ドライブから Office ドキュメントを開きながら、exe(Windows アプリ) をモーダルとして開く

ユーザーが自分のハード ドライブから Office ドキュメントを開く場合、ドキュメントの詳細を取得するためにモーダル ウィンドウとして exe (win フォーム アプリケーション) を開く必要があります。

そのために、オフィス ドキュメント ファイルが開いているかどうかを監視するために、クライアント マシンで実行されるコンソール アプリを開発しました。以下のコードを見つけてください

exeを開くためOnUIAEventに使用しているイベントハンドラーに表示されている場合は、期待どおりに機能しています。Process.Startしかし、私はexeが開いたドキュメントのモーダルとして開く必要があることを望んでいます。以下のコードは、exeのフォームロードです。

Windows アプリケーションを開いて、開いているドキュメントのモーダルとして開くことはできますか?

0 投票する
0 に答える
716 参照

c# - AutomationElement が表示されているかどうかを判断する

AutomationElement がユーザーに表示されているかどうかを判断する方法はありますか?

ClickablePoint と IsOffcreen の両方に、不要な要素を表示/非表示にする例外があります。

例えば。フルスクリーン ウィンドウがある場合、デスクトップ アイコンには ClickablePoint がありませんが、オフスクリーンではありませんが、フルスクリーン アプリケーションのメニューバーにあるはっきりと表示されている項目もクリックできません。

したがって、ClickablePoint を使用すると、デスクトップ アイコンは非表示になりますが、メニュー項目は表示されず、Offscreen を使用すると、メニュー項目は表示されますが、デスクトップ項目も表示されます。