选择控制命令的自动组合框消失



我正在使用AutoIt,并希望使用ControlCommand控制组合框。我可以更改该值,但当我跳到下一个命令时,它将被重置。

我试过几种方法,

http://www.autoitscript.com/forum/topic/109893-combo-box-click-item/

但它不起作用。

$hComBo=ControlGetHandle("","","[CLASS:TComboBox; INSTANCE:6]")
$aList = _GUICtrlComboBox_GetListArray($hComBo)
;_ArrayDisplay($aList)
Select
Case $Baudrate=5
    ControlCommand($hWnd,"",$hComBo,"SelectString",$aList[7])
    MsgBox($MB_OKCANCEL," Info ", @error & " - Element: " & $aList[7])
    ;_GUICtrlComboBox_SetCurSel($hComBo,5)
    ;$iCode = $CBN_SELCHANGE
    ;$val = BitShift($iCode, -16)
    ;_SendMessage($hWnd, $WM_COMMAND, $val, $hComBo)
    ;MsgBox($MB_SYSTEMMODAL," Info ", "hWnd: "& $hWnd &"- WM-Command: "& $WM_COMMAND &"- val: " & $val  &"- hComBo: " &$hComBo)
    Sleep(3000)
    ;MsgBox($MB_OKCANCEL," Info ", $baudrate)
EndSelect    

当Sleep(3000)时,我可以看到组合框中有正确的值,但在处理下一个命令后,它消失了。有什么想法吗?

有时,在设置列表(源)的一个条目后,需要发送WM_COMMAND-消息。但是,如MSDN中所述,要发送的$wParam必须同时包含$iCodeControl-ID

为了解决这个问题,你可以使用这个:

$hControl = ControlGetHandle($hExport, "", "[CLASS:ComboBox; INSTANCE:1]") ; get control handle
_GUICtrlComboBox_SetCurSel($hControl, 2) ; select something
$iID = _WinAPI_GetDlgCtrlID($hControl) ; get control ID
$wParam = BitOR($iID, BitShift($CBN_SELCHANGE, -16)) ; put ID and message together
_SendMessage($hExport, $WM_COMMAND, $wParam, $hControl) ; send massage

最新更新