[原] 用AutoIt3控制其他程序控件的一些经验
Posted by bianbian on 2007-05-12 18:08
这些经验是我实践中经过N次测试发现的,希望对大家有帮助。
控制ComboBox:
如果要更改选择,仅仅”SetCurrentSelection”是不够的。虽然UI上能看到选择项进行了变化,但并不会在功能上生效。正确的做法是先下拉,再选择,然后点击,最后隐藏下拉,即:
- ;对combobox的控制,必须: ShowDropDown, Select, Click, HideDropDown
- ControlCommand($WIN_TITLE, $WIN_TEXT, $Combo, "ShowDropDown")
- ControlCommand($WIN_TITLE, $WIN_TEXT, $Combo, "SetCurrentSelection", $idx)
- ControlClick($WIN_TITLE, $WIN_TEXT, $Combo)
- ControlCommand($WIN_TITLE, $WIN_TEXT, $Combo, "HideDropDown")
控制鼠标点击:
除了ControlClick方法处理鼠标点击外,有时候必须要用到SendMessage,因为鼠标点击事件其实是有坐标位置关系的,用简单的ControlClick并不能完成类似要点击某块区域内某个点的功能。
- ;;;;;;; http://bianbian.sunshow.net ;;;;;;
- #include <misc.au3>
- $handle = ControlGetHandle(...)
- $WM_LBUTTONDOWN = 0x0201
- $WM_LBUTTONUP = 0x0202
- _SendMessage($handle, $WM_LBUTTONDOWN, 0, MyPoint(8, 51))
- _SendMessage($handle, $WM_LBUTTONUP, 0, MyPoint(8, 51))
- ;得到鼠标x,y转换后的数值:高位表示y,低位表示x
- Func MyPoint($x, $y)
- Return ($x + BitShift($y, -8))
- EndFunc
遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道