TPlusMemoU のテキスト取得


IMA  2010-02-03 15:42:43  No: 102205  IP: [192.*.*.*]

Borland C++ で作成されたと思われるアプリがあります。

その中のテキストボックスの様な部分を Spy++で確認すると
Class Name が "TPlusMemoU" となっています。

この部分のテキスト(Caption)はSpy++ではブランクとなっています。

VB6から、この部分のテキストを取得したいと考えていますが、
Web上では参考になるHPなどが見つかりませんでした。

TPlusMemoU 自体は下記の物?かなと考えているのですが・・・
→ VBのリッチテキストの様にハイライト機能なども有ります。
http://www.vclcomponents.com/Delphi/Common_Controls/TPlusMemoU-info.html

何か情報・アドバイスを頂ければ幸いです。

よろしくお願いします。

編集    削除
魔界の仮面弁士  2010-02-03 18:17:05  No: 102206  IP: [192.*.*.*]

TPlusMemoU をインストールしていないので、具体的な事は書けませんが:

> その中のテキストボックスの様な部分を Spy++で確認すると
> Class Name が "TPlusMemoU" となっています。
inspect を用いて、その部分の文字列を取得することはできますか?
http://www.microsoft.com/downloads/details.aspx?familyid=3755582A-A707-460A-BF21-1373316E13F0&displaylang=en

もしそれが可能なら、VB6 から IAccessible インターフェイス経由で
取得できるかも知れません。

編集    削除
IMA  2010-02-03 19:51:42  No: 102207  IP: [192.*.*.*]

魔界の仮面弁士さん、面白いツールご紹介有り難うございました。

早速調べましたが、Spy++と同じく取得できませんでした。
取得できる場合は下記のValueに入ってくると思いますが、・・・

How found:  Focus [o:0xFFFFFFFC,c:0x0]
  hwnd=0x00130BA6 32bit class="TPlusMemoU" style=0x54010000 ex=0x200
Info:  IAcc = 0x0017C490 VarChild:[VT_I4=0x0]
Interfaces:  IEnumVARIANT IOleWindow IAccIdentity
Impl:  Local oleacc proxy
Annotation ID:  01000080A60B1300FCFFFFFF00000000
Name:  none [false]
Value:  none [false]
Role:  クライアント
State:  フォーカスされています。,フォーカスできます。


単なるテキストボックス(class="TEdit")なら下記のようになります。

How found:  Focus [o:0xFFFFFFFC,c:0x0]
  hwnd=0x00370C86 32bit class="TEdit" style=0x540100C0 ex=0x200
Info:  IAcc = 0x0015EDE0 VarChild:[VT_I4=0x0]
Interfaces:  IEnumVARIANT IOleWindow IAccIdentity
Impl:  Local oleacc proxy
Annotation ID:  01000080860C3700FCFFFFFF00000000
Name:  none [false]
Value:  "備考1"
Role:  編集可能なテキスト
State:  フォーカスされています。,フォーカスできます。


★ Role:  クライアント が気になりますが・・・

編集    削除
魔界の仮面弁士  2010-02-03 22:19:23  No: 102208  IP: [192.*.*.*]

失礼、Inspect ではなく、AccExplorer の方でした。

メモ帳/ワードパッド/Internet Explorer 等の内容であれば、
先の Microsoft Active Accessibility 経由で取得できるのですが、
ツールで拾えないとなれば、この方法では無理そうです。
http://msdn.microsoft.com/ja-jp/library/cc421916.aspx

# もし、文字列を「描画」しているアプリだとしたらお手上げかも。


OS 標準のテキストボックスが相手なら、WM_GETTEXT や EM_GETTEXT(EX) で
得られる可能性もあるのでしょうけれども… Spy++ でキャプションが
空になっているということは、それでは通用しそうにないですね。

何か専用のメッセージがあるのかも知れませんが、ソフト自体を
見たことが無いので、これ以上は分からないです。

編集    削除
IMA  2010-02-04 00:06:37  No: 102209  IP: [192.*.*.*]

魔界の仮面弁士さん

> 失礼、Inspect ではなく、AccExplorer の方でした。
これも試しましたが、やはり取得できませんでした。

色々アドバイス有り難うございました。

>OS 標準のテキストボックスが相手なら、WM_GETTEXT や EM_GETTEXT(EX) で
>得られる可能性もあるのでしょうけれども… Spy++ でキャプションが
>空になっているということは、それでは通用しそうにないですね。

Spy++ 以外にも、WinSpy,Winspector Spy でも同じでした。

もう少し、代替え方法も含め調べてみます。

編集    削除