問題タブ [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.
c# - AutomationElement はまだ生きていますか?
Microsoft UI オートメーションを使用していますが、AutomationElement がまだ生きているかどうかを知りたいという問題があります。より正確には、ウィンドウが閉じられているかどうかを確認したい。これは、この種の質問の最も一般的なケースだと思います。さまざまなシナリオを試した結果、要素のさまざまなプロパティにアクセスして、ElementNotAvailableException がスローされるかどうかを確認するソリューションにたどり着きました。また、IsOffscreen というプロパティも見つけました。これは、この場合に非常に役立つようです。それでも、ネット上でこれについてあまり見つけることができなかったので、より良い解決策があるかどうか知りたい. フレームワークが非常に不安定に見えるので (特に AutomationElement を見つける際に)、ここ数日はフレームワークにあまり満足していません。
どうもありがとうございました
マルセル
c# - RangeValuePatternを介してAutomationElementからスピナーの値を取得する方法は?
スピナーの値を取得して、C# の AutomationElement を介して正しく入力されたことを確認しようとしています。私が現在行っていることはTryGetCurrentPattern
、以下に示すようにそれを取得しようとしていますが、スピナーに別の値 (1 など) が表示されているにもかかわらず、値に対して 0.0 しか返されません。
valueRangePattern.Current
また、スピナーが制限されているにもかかわらず、最大値と最小値のフィールドを見ると、常に 0.0 になっていることに気付きました。またValuePattern
、スピナーから出ようとしましたが、if ステートメントには入りませんif (spinnerAutoEle.TryGetCurrentPattern(ValuePattern.Pattern, out pattern))
。このようにスピナーから数値を取り出すことは可能でしょうか?
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
ボタンを呼び出します
実際のアプリケーションはもう少し複雑で、 と を使用MVVM
しPRISM 5
ますWCF
。WCF を使用して、サーバーから Word ドキュメントを読み込みます。ファイルは %temp% に保存されます。
2 つViewModel
の s (ドキュメントの編集 / マージされたドキュメントの表示、それぞれ a 内)は、s がサブスクライブするをdifferent module
発行します。event
View
IsWindowPatternAvailable
の助けを借りての違いを発見しましたinspect.exe
。IsWindowPatternAvailable = true
ダイアログが and の直接の子である場合、Desktop
見つけることができます。IsWindowPatternAvailable = false
にダイアログが表示されない場合でも、ダイアログをクリックしてダイアログのプロパティにアクセスできますTreeView
。inspect.exe
ではinspect.exe
、次のことがわかりますancestors
。
- 対話そのもの
- 要素クラス名: シェルの埋め込み
- ウェブブラウザ
- ViewEdit (ドキュメントを編集するためのビュー)
- 応用
コードを使用して「マージ」モジュールでドキュメントを編集すると、ダイアログが正しく閉じられます。両方のモジュールが同じUIAutomation
DLL (UIAutomationClient、UIAutomationProvider) を参照します。
同様の問題がここで言及されています: AutomationElement は Inspect.exe を使用して表示されますが、表示されません ...
を使用しTreeWalker
たり、全体を検索したりすることSubtree
はAutomationElement.RootElement
できません。
IsWindowPatternAvailable
そのように振る舞う理由の手がかりは大歓迎です。ファイルのダウンロード ダイアログを閉じる方法に関するその他の提案も歓迎します。
c# - ハード ドライブから Office ドキュメントを開きながら、exe(Windows アプリ) をモーダルとして開く
ユーザーが自分のハード ドライブから Office ドキュメントを開く場合、ドキュメントの詳細を取得するためにモーダル ウィンドウとして exe (win フォーム アプリケーション) を開く必要があります。
そのために、オフィス ドキュメント ファイルが開いているかどうかを監視するために、クライアント マシンで実行されるコンソール アプリを開発しました。以下のコードを見つけてください
exeを開くためOnUIAEvent
に使用しているイベントハンドラーに表示されている場合は、期待どおりに機能しています。Process.Start
しかし、私はexeが開いたドキュメントのモーダルとして開く必要があることを望んでいます。以下のコードは、exeのフォームロードです。
Windows アプリケーションを開いて、開いているドキュメントのモーダルとして開くことはできますか?
c# - AutomationElement が表示されているかどうかを判断する
AutomationElement がユーザーに表示されているかどうかを判断する方法はありますか?
ClickablePoint と IsOffcreen の両方に、不要な要素を表示/非表示にする例外があります。
例えば。フルスクリーン ウィンドウがある場合、デスクトップ アイコンには ClickablePoint がありませんが、オフスクリーンではありませんが、フルスクリーン アプリケーションのメニューバーにあるはっきりと表示されている項目もクリックできません。
したがって、ClickablePoint を使用すると、デスクトップ アイコンは非表示になりますが、メニュー項目は表示されず、Offscreen を使用すると、メニュー項目は表示されますが、デスクトップ項目も表示されます。