HWNDを持たないコントロールのテキストをどのように読むことができますか?たとえば、オフィス2007の印刷ダイアログには、すべてのコントロール(わずかな数)にHWNDがありません。ウィンドウレスコントロールからテキストを取得
これらのコントロールからテキストを取得するにはどうしますか? 私は彼らが単に窓に描かれ、ヒットテストを使って反応すると信じていますが、私はよくわからないので、皆さんにお尋ねします:-)。
ありがとうございました!
HWNDを持たないコントロールのテキストをどのように読むことができますか?たとえば、オフィス2007の印刷ダイアログには、すべてのコントロール(わずかな数)にHWNDがありません。ウィンドウレスコントロールからテキストを取得
これらのコントロールからテキストを取得するにはどうしますか? 私は彼らが単に窓に描かれ、ヒットテストを使って反応すると信じていますが、私はよくわからないので、皆さんにお尋ねします:-)。
ありがとうございました!
一般的に、これを行う方法は保証されていません。しかし、IAccessible interfaceを使用してテキスト(およびコントロールに関するその他の情報)を取得できる可能性があります。ほとんどのマイクロソフト製品は、このインターフェイスをほとんどのUI要素に実装しています。これは、障害者のためのスクリーンリーダーの動作方法です。
一般的なウィンドウレスコントロールでは、テキストは画面上のピクセルとしてのみ存在するため、それを読むための唯一の方法はOCRです。
検査する特定のコントロールの詳細については、ウィンドウレスコントロールにメッセージを処理する親ウィンドウがあること、または操作できるCOMオブジェクトがコントロールにあること、コントロールがWindowsのアクセシビリティAPIを尊重していることを確認します。コントロールについて他のことがわからない場合は、ピクセルだけがあります。
ありがとうございます! IAccessibleインターフェイスは非常に興味深いですね! :-) – TCS
Windows SDKに含まれている "Inspect"ツールを見て、画面上の要素を指すようにしてください。IAccessibleから取得できる情報はすべてダンプします。通常、API AccessibleObjectFromPointまたはAccessibleObjectFromWindowを使用して最初のIAccessibleを取得し、そこからツリーをトラバースして、プロパティを取得します。 – BrendanMcK