リボン UI の要素を検索する その 2
Migemize Windows に機能追加中
前回挙がっていた問題をいくつか解決
以下は、ブラシの要素を取得する例です。
展開できるボタンの場合、「>」が名称に付加されます。
これを選択して、TAB キーを押下すると中の要素が表示されます。
このリストから選択、実行もできます。
ウィンドウを早めに表示し、ユーザのキー入力を先行して受け付けるようにしています。
そうすれば、ユーザがキー入力している間に要素の取得処理が終わってくれる……かも。
少なくともユーザが何もせずに待つ時間が減るので、ストレスは軽減されるはず。
下は「ヘルプ」まで取得した状態でウィンドウが表示されています。
全要素を取得し終えたら、リストの内容が更新されます。
下の例だと、「ホーム」リボンに含まれる要素の取得が終わり、「ヘルプ」の下に追加されています。
理由がよく分からない。
振舞いを見るかぎり、最後に実行した要素の名称だけは取得できている。
MSAA、 UI Automation、Win32 API、どれ使っても結果が同じだったので、どうしよう……。
Win32 API でしか試してないので、まだ希望はあるかも。
ただ、MSAA、 UI Automation どちらを使うにしても、遅延ロードは必須になりそう。
前回挙がっていた問題をいくつか解決
展開できるボタン(ポップアップを持つボタン)がある場合、中の要素を取得できない
段階を踏んで、取得できるようにしました。以下は、ブラシの要素を取得する例です。

展開できるボタンの場合、「>」が名称に付加されます。

これを選択して、TAB キーを押下すると中の要素が表示されます。
このリストから選択、実行もできます。

検索が遅い
遅延ロードで対応することにしました。ウィンドウを早めに表示し、ユーザのキー入力を先行して受け付けるようにしています。
そうすれば、ユーザがキー入力している間に要素の取得処理が終わってくれる……かも。
少なくともユーザが何もせずに待つ時間が減るので、ストレスは軽減されるはず。
下は「ヘルプ」まで取得した状態でウィンドウが表示されています。

全要素を取得し終えたら、リストの内容が更新されます。
下の例だと、「ホーム」リボンに含まれる要素の取得が終わり、「ヘルプ」の下に追加されています。

その他の変更点
実行できない要素は文字色を変えています。(上の例だと、文字色がシアンの要素)次やることメモ
ツールバーの要素も取得できるようにする
一旦、実装したが、アプリケーションによっては全ての要素の名称を取得できない。理由がよく分からない。
振舞いを見るかぎり、最後に実行した要素の名称だけは取得できている。
MSAA、 UI Automation、Win32 API、どれ使っても結果が同じだったので、どうしよう……。
メニューの取得方法を改善する
中途半端に取得できたり、全く取得できなかったり、これも謎が多い……が、Win32 API でしか試してないので、まだ希望はあるかも。
ただ、MSAA、 UI Automation どちらを使うにしても、遅延ロードは必須になりそう。
スポンサーサイト