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

タイトル Re: 外部アプリのコンボボックスのテキスト取得
投稿日: 2013/08/09(Fri) 19:41
投稿者魔界の仮面弁士
>  Delphiで作成された外部アプリのコンボボックスの、
検証できそうな Delphi アプリが手元に無いので、当方でチェックできるかは
分かりませんが、可能であれば、第三者がテスト可能なコードを頂けると
具体的な回答を付けやすいです。


> 1.コンボボックスのハンドルを取得
> 2.Sendmessage APIのCB_GETCURSELでリストのindexを取得
> 3.同じくCB_GETLBTEXTでテキストを取得
この方法については、動作したのですね。


> この方法だと3番まではいいのですが4番でVBがダウンします。
3と5の間に、CB_GETLBTEXTLEN を含めるべきかと思います。


>   lngRet=SendMessate(hwnd,CB_GETLBTEXT,0,ItemText)
>   ↑ここでダウン

『ダウン』とは、具体的にはどういう状態のことでしょうか。

SendMessage をスペルミスしているから、という理由では無いにしても、
lngRet がエラー値になるのか、実行時エラーになるのか、あるいは
バッファオーバフローでクラッシュしているのか、それとも…?


>  str=left(ItemText,Instr(ItemText,vbNullChar)-1)
Str関数と間違えそうな変数名はさておき。

上記のままだと、ItemText が vbNullString や "" だった場合に
引数エラーを起こしますので、直した方が良いでしょう。たとえば
 = Left(ItemText, InStr(1, ItemText & vbNullChar, vbNullChar) - 1)
もしくは
 = Split(ItemText & vbNullChar, vbNullChar, 2)(0)
などに修正されてみては如何でしょう。

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

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