2011-07-07 18 views
0

HWNDを持たないコントロールのテキストをどのように読むことができますか?たとえば、オフィス2007の印刷ダイアログには、すべてのコントロール(わずかな数)にHWNDがありません。ウィンドウレスコントロールからテキストを取得

これらのコントロールからテキストを取得するにはどうしますか? 私は彼らが単に窓に描かれ、ヒットテストを使って反応すると信じていますが、私はよくわからないので、皆さんにお尋ねします:-)。

ありがとうございました!

答えて

2

一般的に、これを行う方法は保証されていません。しかし、IAccessible interfaceを使用してテキスト(およびコントロールに関するその他の情報)を取得できる可能性があります。ほとんどのマイクロソフト製品は、このインターフェイスをほとんどのUI要素に実装しています。これは、障害者のためのスクリーンリーダーの動作方法です。

+0

ありがとうございます! IAccessibleインターフェイスは非常に興味深いですね! :-) – TCS

+1

Windows SDKに含まれている "Inspect"ツールを見て、画面上の要素を指すようにしてください。IAccessibleから取得できる情報はすべてダンプします。通常、API AccessibleObjectFromPointまたはAccessibleObjectFromWindowを使用して最初のIAccessibleを取得し、そこからツリーをトラバースして、プロパティを取得します。 – BrendanMcK

1

一般的なウィンドウレスコントロールでは、テキストは画面上のピクセルとしてのみ存在するため、それを読むための唯一の方法はOCRです。

検査する特定のコントロールの詳細については、ウィンドウレスコントロールにメッセージを処理する親ウィンドウがあること、または操作できるCOMオブジェクトがコントロールにあること、コントロールがWindowsのアクセシビリティAPIを尊重していることを確認します。コントロールについて他のことがわからない場合は、ピクセルだけがあります。

関連する問題