タイトル : 外部アプリのコンボボックスのテキスト取得 投稿日 : 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でないといいのですが。 よろしくお願いします。 |