問題タブ [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.

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

sendmessage - 非アクティブおよび非表示のウィンドウ/WPF フォームにマウス イベントを送信する

デスクトップで最小化または非表示にできるウィンドウ Win32/WPF でマウス イベントを生成する必要があるアプリを開発しています。

user32.dll API SendInput、SendMessage、PostMessage などを試しました。これらは、ウィンドウがデスクトップに表示されている場合にのみ機能します。非表示/非アクティブなウィンドウで機能する方法を知っていますか?

.NET の UI オートメーション ライブラリも試しました。この場合、ウィンドウが前面に表示されるか、コントロールのクリック可能なポイントを取得できません。

どうすれば進められるのでしょうか?進めたら?

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

c# - UI オートメーション イベントが PowerPoint 2007 からキャッチされない

ユーザーが新しいリボン タブを選択したときに、PowerPoint 2007 (または理想的には任意のバージョン) から UI オートメーション イベントをキャプチャしようとしています。SDK ツールの Inspect と AccEvent を使用して、これらのイベントをキャッチする妥当な「親」要素は「リボン タブ」要素であると判断しました。

AccEvent をその要素にスコープし、自動化イベント内で SelectionItem_ElementSelected に登録すると、期待どおりにイベントが取得されます。タブがクリックされると、AccEvent がそれをキャッチしてログに記録します。

私は 2 つのリンクのみを投稿することを許可されており、画像をインライン化することはまだできないため、できるだけ多くの関連情報を各リンクに絞り込むためにいくつかのモザイクを作成しました。上記の動作に関連するリンクは次のとおりです。

http://hirstius.com/media/stackoverflow/UIA_sdk_tools.png

それに基づいて、プログラムからこれらのイベントをキャッチする次のコードを思い付きました。

このコードの結果は、まあ、何もありません。

トップレベルの「ウィンドウ」を購読しても、まだ何もありません。

代わりに、最上位の自動化要素をサブスクライブするだけで、予想されるイベントを取得できますが、問題があります。AccEvent では、イベントはタブがクリックされたとき、つまり真に「選択された」ときにのみ表示されます。ルート AutomationElement にバインドすると、マウスオーバー/ホバー時にイベントが発生し、クリック時には何も発生しません。タブが実際に選択されたときにのみイベントが発生する必要があります (これは、「リボン タブ」要素にスコープされたときに AccEvent が提示する動作とまったく同じです)。

結果リンク: http://hirstius.com/media/stackoverflow/UIA_Result.png

ユーザーがリボンの新しいタブを選択したときに .NET アプリケーションに通知する方法が必要ですが、明らかに不足していることはありますか?

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

asp-classic - CodeCharge 4.3 でソフトウェアのビルド/公開を自動化する UIAutomation - SendKeys のシンプルで堅牢な代替手段?

CodeCharge 4.3 を使用して Classic ASP に実装された大規模プロジェクトのビルド/公開を自動化しようとしています。

Classic ASP はスクリプト言語であり、アプリケーション自体は実際には「コンパイル」されていませんが、発行プロセス中に CodeCharge ID が破損したページを検出できます。これは、残念ながら私たちにとって一般的なイベントです。これを CI 用の TeamCity にフックしたいと考えています。

CodeCharge にはコマンドライン インターフェイスがないため、UI を自動化する必要があります。

私は .NET UIAutomation クラスを使用しており、IDE の読み込み、発行のトリガー、出力ウィンドウからの出力のキャプチャ、および終了に成功しました。

パブリッシュをトリガーするには、 http://inputsimulator.codeplex.com/を使用して F9 キーを押します。CodeCharge がフォーカスを失うと失敗するので、私はこれに完全に満足しているわけではありません。フォーカスがあるかどうかに関係なく、UIAutomation を使用して F9 キー押下をウィンドウに送信する方法はありますか?

パブリッシュは、ツールバー、メニュー、またはツリービューに関連付けられたコンテキスト メニューからトリガーすることもできます。これらの要素が公開されていないように見えるため、これらのいずれにもあまり運がありませんでした。たとえば、inspect.exe を使用すると、ツールバー (Name="Standard", Classname="CCSToolbarWindow") を見つけることができますが、inspect.exe も UIAutomation アプリケーションもその下には何も表示されません。inspect.exe がツールバー要素で使用できる唯一のパターンは「IsLegacyIAccessiblePatternAvailable = True」です。左クリック イベントを特定の座標でツールバーに送信できる可能性があると思いますが、これは私のリーグから外れています。

このアプリケーションはかなり古いため、引き続き追求する場合は、アンマネージ UIAutomation を検討するか、Win32 API などを詳しく調べる必要があると思いますが、より簡単な解決策を望んでいました。

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

windbg - UISpy と Process Memory Dump からの RuntimeId を指定して、非表示の UI 要素の原因を見つけるにはどうすればよいですか?

時折、アプリケーションのバグにより、Z-Index を持つ非表示の UI コントロールが生成されます。これは、それが他の UI 要素の上にあることを意味します。この非表示のペインは画面の左上隅に表示され、ユーザーが最大化されたウィンドウから [ファイル] メニューをロードするのを防ぎます。アプリケーションを閉じると、UI 要素は消えます。

UISpy を使用して、要素に関する次の情報を取得できました。

WinDbg で開いているアプリケーションのメモリ ダンプもあります。RuntimeID を持つ UI 要素を参照する管理対象オブジェクトを見つけるにはどうすればよい"42 21628486"ですか? または、特定の幅のオブジェクトを検索できますか?

管理対象のオブジェクトを見つけることで、隠れたウィンドウの原因についての手がかりが得られることを願っています。

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

microsoft-ui-automation - C ++での.net UIAutomationの簡単な例

私は.Net でUIAuomation Clients APIを使用しており、C# の代わりに C++ を使用する必要があります。これは、SendInput関数が C++ でのみ使用可能であり、任意のアプリケーションにマウス クリックを送信する最も信頼できる方法であると思われるためです (この質問と同じ問題:パターンが実装されていないコントロールを操作する方法は? )。

現在、msdn のドキュメントが不足しているため、UIAutomation API の C++ バージョンに苦労しています。CreatePropertyCondition、 UIA_NamePropertyId 、および「Windows Media Player」を使用して PropertyCondition を作成する方法を教えてください。

私は常にif状態の中に入っています。変数は正常に機能しておりg_pAutomation、RootElement を正常に取得できます。

また、簡単なチュートリアル/サンプル (C++) へのリンクも非常に役立ちます。

ありがとう

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

c# - サービスからの UIAutomation の使用

コンソール アプリで動作する UIAutomation を使用したコードがありますが、サービスとして実行する必要があります。このサービスは、特定のマシンで 3 つの exe が実行され、それらが正しく構成されていることを確認します。C++ で記述された exe への COM または .net エントリ ポイントはありません。

これが実行されている間にログオンしているのと同じユーザーとしてサービスを実行しようとしました.デスクトップビットとの対話をオンにしてローカルサービスとして実行しようとしました. から AutomationElement を取得することはありません

ライン。私が別の方法で何をする必要があるかについて誰かが考えましたか?

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

wpf - UI オートメーション変更プロパティ IsEnabled プロパティ要素

カスタム プロセス インジェクションを WPF プロセスに実行し、プロセス間の名前付きパイプを有効にして通信します。インジェクション プロセスが完了するまで、メインウィンドウを無効にしたいと考えています。

UIAutomation ライブラリを使用して、wpf ウィンドウのプロパティを確認しています。 AutomationElementプロパティを介してプロパティ値をチェックするメソッドを提供しGetCurrentValueます。

SetCurrentValueを設定できるメソッドと同等のものは何IsEnabledPropertyですか?

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

wpf - ページ上の一部のコントロールが MS UI オートメーションで表示されない

TabControl のコントロール テンプレートがいくつかのグリッドとスタック パネルを定義する、StartPage.xaml を含むアプリケーションがあります。そのテンプレートには、xaml の中央に itemPresenter があり、その下にスタック パネルがあります。ユーザーにとっては問題なく機能しますが、MS UI オートメーションは、アイテム プレゼンター内のタブ アイテムのみを表示でき、テンプレートの同じレベルで定義されているものは何も表示しません。MS UIA からは見えないスタック パネル内に標準ボタンを追加して、それがカスタム ユーザー コントロールに関連する問題かどうかを確認しようとしましたが、その標準ボタンも MS UIA では表示されません。Snoop を使用すると、テンプレート階層の対応するレベルにある snoop のツリーで、テンプレートのすべての要素を確認できます。しかし、MS UIA はまだそれらを見つけることができません。

MS UIA がページ上でそれらを見つけられないようにするコントロールの何が問題になるのでしょうか?

0 投票する
5 に答える
7380 参照

.net - WPF 4.0 アプリ全体で UI オートメーションを無効にすることはできますか?

内部使用のための WPF 4.0 アプリケーションを開発しています。
一部のクライアントでは、UI の自動化が原因で大きなパフォーマンスの問題が発生しています (これらのクライアントには、タブレット サービス ペン、タッチなどのソフトウェアがインストールされています)。

これは WPF 4.0 の既知の問題です。たとえば、次を参照してください。


非常に限られたスペックのマシンでこの問題を再現することができました。このマシンで WPF ウィンドウを開くには、次の処理が必要です。

  • 00:00:02 - UI 自動化トリガー ソフトウェアがインストールされていない
  • 00:01:41 - UI 自動化トリガー ソフトウェアがインストールされている (このテストではロボフォーム)
  • 00:00:09 - UI 自動化トリガー ソフトウェアがインストールされ、ホットフィックス KB2484841 が適用された状態

ご覧のとおり、ホットフィックス KB2484841 をインストールすると大幅に改善されますが、UI Automation トリガー ソフトウェアをインストールせずに実行する場合ほど高速ではありません。
さらに、どのソフトウェアをクライアントにインストールするかについてはあまり制御できないため、この修正をすべてのクライアントに展開することは困難です。


したがって、WPF アプリケーション全体の UI オートメーションを「オフ」にすることは可能ですか? UserControl ごとに実行できることはわかっていますが、アプリ全体で実行できますか?

この投稿で提供されているコードを試しましたが、成功しませんでした。


時間をありがとう、
コーエン