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

解決


ハナクソース  2004-04-23 20:49:56  No: 112945

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

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

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


いちゆ  2004-04-24 01:17:27  No: 112946

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


kara  2004-04-24 01:22:05  No: 112947

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

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

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


ハナクソース  2004-04-24 02:44:26  No: 112948

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

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


Say  2004-04-24 07:27:18  No: 112949

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


ハナクソース  2004-04-28 03:13:03  No: 112950

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

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

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


魔界の仮面弁士  2004-04-28 05:29:49  No: 112951

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

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

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

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


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

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






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