tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

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

よろしくお願いします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。