タイトル : 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) などに修正されてみては如何でしょう。 |