ウィンドウの文字列を取得したい

解決


ハナクソース  2004-04-23 20:49:56  No: 112945  IP: [192.*.*.*]

こんにちは。VB6で開発を行っています。

ウィンドウに表示されている文字列を取得できるようなAPIとかって、あるんでしょうか??(たとえばメッセージボックスメッセージの部分の文字列とか、フォームのラベルの文字列(LabelのCaptionプロパティに設定する文字列)等のことです。)

ウィンドウタイトルの取得はAPIでできますよね〜でも内部の文字列を取得なんて、できるんでしょうか??どなたかご存知の方がみえたら、よろしくおねがいします。

編集    削除
いちゆ  2004-04-24 01:17:27  No: 112946  IP: [192.*.*.*]

いちおうWindowsの標準コントロールならWM_GETTEXTあたりで取れそうだけど、
まぁ相手のウィンドウハンドルさえわかればね。

編集    削除
kara  2004-04-24 01:22:05  No: 112947  IP: [192.*.*.*]

投稿しようとしたら
いちゆさんとかぶりました・・・

書き直すのはもったいないのでそのまま投稿します
--------------------------------------------------
対象の親ウインドウのウインドウハンドルがわかっていれば
EnumChildWindowsを使用して子ウインドウのハンドルが取得できます
そのハンドルに対して
SendMessageでWM_GETTEXTを投げてみれば取得できると思われます

ただしそれはStaticクラスの場合は、です
メッセージボックスのメッセージ部分はStaticクラスなので取得できますが、
VBで作成されたアプリのラベルを使用している部分は取得できなかったと記憶しています
(なぜならウインドウハンドルが無いから、おそらくTextOutなどのAPIを使用して表示しているだけかと思われます)

編集    削除
ハナクソース  2004-04-24 02:44:26  No: 112948  IP: [192.*.*.*]

いちゆさんありがとうございます。

ウィンドウハンドルの取得はAPIでできると思います。
ところで、WM_GETTEXTとは何でしょうか!?もう少し詳しく教えていただけないでしょうか??

編集    削除
Say  2004-04-24 07:27:18  No: 112949  IP: [192.*.*.*]

単語わかっているんだから、Web検索で
自分で探してみようとか思いません?

編集    削除
ハナクソース  2004-04-28 03:13:03  No: 112950  IP: [192.*.*.*]

遅ればせながら、
karaさんに教えていただいた方法で取得することができました。

ちなみに、調べていたんですがGetWindowTextでも取得できるみたいです☆

いちゆさん、kara さん
どうもありがとうございました!

編集    削除
魔界の仮面弁士  2004-04-28 05:29:49  No: 112951  IP: [192.*.*.*]

> ちなみに、調べていたんですがGetWindowTextでも取得できるみたいです☆

GetWindowTextですと、フォームのCaption程度なら取れそうですが、
テキストボックス(EditBox)などの情報は取得出来ないと思いますよ。

自分自身のコントロールの内容なら取得出来ると思いますが、
他プロセスのコントロールの値は、やはりWM_GETTEXTを使うことになるかと。

# 対象となるコントロールによっては(例えばListViewとか)、
# WM_GETTEXTでも取得できませんけどね。

編集    削除