タイトル | : 外部アプリのコンボボックスのテキスト取得 |
記事No | : 15777 |
投稿日 | : 2013/08/09(Fri) 14:24 |
投稿者 | : REX |
環境 VB6 WindowsXP
Delphiで作成された外部アプリのコンボボックスの、現在表示 されているテキストを取得しようとしています。 そこでまず次のように考えました。
1.コンボボックスのハンドルを取得 2.Sendmessage APIのCB_GETCURSELでリストのindexを取得 3.同じくCB_GETLBTEXTでテキストを取得
しかし、アプリには同様なコンボボックスがいくつもあり、かつ Captionも無いためコンボボックスを特定することができませんで した。そこで次のように考えました。
1.EnumChildWindows APIですべてのChildWindowの中から、 クラス名がTComboBoxである時 2.CB_GETLBTEXTでIndex0のテキストを見て予想されるものと 一致したものを対象となるコンボボックスであると断定する。 3.CB_GETCURSELでIndexを取得 4.CB_GETLBTEXTでテキストを取得
この方法だと3番まではいいのですが4番でVBがダウンします。
【EnumChildProcの一部】
if ClassName="TComboBox" then lngRet=SendMessate(hwnd,CB_GETLBTEXT,0,ItemText) ↑ここでダウン
str=left(ItemText,Instr(ItemText,vbNullChar)-1) if str="予想されるText" then Index=SendMessage(hwnd,CB_GETCURSEL,0,0) lngRet=SendMessate(hwnd,CB_GETLBTEXT,Index,ItemText) str=left(ItemText,Instr(ItemText,vbNullChar)-1) end if end if
そこで質問です。 1.この方法が正しいのか 2.ほかの方法でするべき 3.不可能
1.2については正しい方法を教えてください。 できれば3でないといいのですが。
よろしくお願いします。
|