2014-10-08 24 views
0

我正在使用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  

在休眠(3000)我可以看到,有在组合框中正确的值,但处理它消失的下一个命令之后。有任何想法吗?

+2

?你下一步怎么做?也许脚本中的下一步创建结果。 – Xenobiologist 2014-10-08 11:26:13

+0

下一步是解决方案。它是一个TPanel,它显示从TreeView中选择的图片。我改变了命令的顺序,(我现在先选择第一个条目)并且它可以工作。现在我的设置不再被覆盖。 – Ingo 2014-10-08 11:55:18

+1

我同意@Xenobiologist。您应该发布完整的脚本,因为您张贴的片段肯定不会对问题负责。 – mrt 2014-10-08 19:55:16

回答

0

有些时候,在发送一个列表(source)的一个条目后需要发送一个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