Qt製アプリの情報を取得するには?


たま  2012-06-04 20:25:07  No: 42419

Qtというツールで作られたアプリケーションのようなのですが
そのアプリ内のEditコントロールらしきウインドウに入力された文字列を
取得したいのですが・・・なかなかうまく取得できません。
ハンドルは正常に取得できます。
クラス名はいろいろなコントロールを試していますが、ほとんどが"QWidget"になります。
問題の文字列はコントロールごとに違いますが、固定の文字列が返って
きます。
どうもウィンドウタイトルが返ってくるようです。

環境は Win7(64bit) + Delphi7です
文字列の取得はSendMessageでWM_GETTEXTを送っています。

正常に取得する方法は無いでしょうか?
宜しくお願い致します。


Nov  2012-06-05 04:00:38  No: 42420

>ハンドルは正常に取得できます。
対象コントロールのウィンドウハンドルでないのでは?
GetWindowRectなどで確認してみてください。


たま  2012-06-05 04:43:11  No: 42421

Novさん、こんにちは
ありがとうございます

>対象コントロールのウィンドウハンドルでないのでは?
>GetWindowRectなどで確認してみてください。

何種類かのハンドル取得ソフトで確認していますので間違いはないはずです


tor  2012-06-05 07:03:46  No: 42422

Qtって標準コントロールをラップしているわけではなくて、一から独自実装じゃなかったでしたっけ。
GETTEXTで取れないとしたら、内部で文字列を独自管理しているでしょうから標準的な方法では取れないと思います。

ざっと調べたところでは、やはり一般的な方法は存在しないようですね。
唯一の可能性としては、MSAA (Microsoft Accessibility Support) の機能を相手のアプリケーションが有効にしていればUI Automationの機能を使って取れるかも、ということですが……
http://msdn.microsoft.com/en-us/library/ee684009.aspx


たま  2012-06-05 18:39:26  No: 42423

torさん、こんにちは
ありがとうございます

>唯一の可能性としては、MSAA (Microsoft Accessibility Support) の機能を相手のアプリケーションが有効にしていればUI Automationの機能を使って取れるかも、ということですが……

調べてみました・・・
該当アプリの全てのウインドウの AutomationId が取得できませんでした
これは UI Automation が使えないってことなのかな?

期待しているアプリなのでも少し頑張ってみます


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加