2 フォーラムやその他の関連する質問を調べましたが、あまり役に立ちませんでした。私の質問は、AutoIt を使用してメッセージをコントロールに送信することに関連しています。次のコードでは、検索するつもりだった Text のインデックス ("L20") を見つけようとしています。アプリケーションは VB で記述されており、VB を介した同じ SendMessage が機能します。以下の SendMessage には問題があると思います。問題を見つけるのを手伝ってください。
$WindowName = "Form1"
$WindowText = ""
WinWait("[CLASS:ThunderRT6FormDC]")
Local $hListBox1 = ControlGetHandle("[CLASS:ThunderRT6FormDC]", "", "ThunderRT6ListBox1")
Local $hListBox2 = ControlGetHandle("[CLASS:ThunderRT6FormDC]", "", "ThunderRT6ListBox2")
WinActivate( $WindowName, $WindowText )
ControlClick("[CLASS:ThunderRT6FormDC]", "", "ThunderRT6ListBox2")
MsgBox(0, "ControlGetHandle Example", $hListBox1 & " - " & $LB_FINDSTRING & " - " & -1 & " - " & "L20")
MsgBox(0, "ControlGetHandle Example", $hListBox2 & " - " & $LB_FINDSTRING & " - " & -1 & " - " & "L20")
Local $sText = "L20"
Local $obj1 = DllCall("user32.dll", "int", "SendMessageA", "hwnd", $hListBox1, "UINT", $LB_FINDSTRING, "WPARAM", -1, "wstr", $sText)
Local $obj2 = DllCall("user32.dll", "int", "SendMessageA", "hwnd", $hListBox2, "UINT", $LB_FINDSTRING, "WPARAM", -1, "wstr", $sText)
;Local $obj1 = _SendMessageA($hListBox1, $LB_FINDSTRING, -1, "L20")
;Local $obj2 = _SendMessageA($hListBox2, $LB_FINDSTRING, -1, "L20")
MsgBox(0, "ControlGetHandle Example", "The control handle of ThunderRT6ListBox1 is: " & $obj1 & $obj2)
次の vb6 バージョンは VB6 アプリケーションで動作します
If FindExactMatch Then
GetListBoxIndex = SendMessage(hWnd, LB_FINDSTRINGEXACT, StartIndex, SearchKey)
Else
GetListBoxIndex = SendMessage(hWnd, LB_FINDSTRING, StartIndex, SearchKey)
End If