cashiba 发表于 2016-4-15 22:37:25

如何选定编辑框下拉列表中的某一项值?

本帖最后由 cashiba 于 2016-4-17 11:35 编辑


如上图这样的下拉列表,用什么函数能自动选定其中的项目c并填写到该编辑框中呢?


下拉列表编辑框的父窗句柄为$H2
下拉列表编辑框的类名为(AU3窗口信息工具取得)。


ControlFocus($H2,"","")
可以把光标定位于该编辑框内。

但是下面的几个函数都没有反应,是函数运用错误还是语法不对呢?
ControlSend($H2,"","","项目C")
ControlSetText($H2,"","","项目C")
Local $cnt = ControlCommand($H2, "", "", "SetCurrentSelection", 3)
Local $cns = ControlCommand($H2, "", "", "SelectString", '项目C‘)

请路过的大侠指点一二,万谢.....

heroxianf 发表于 2016-4-15 23:50:25

发送命令到控件.
ControlCommand("标题", "文本", 控件ID, "命令"[, "选项"])
请看帮助文件这个函数的使用。

131738 发表于 2016-4-16 09:44:01

"ShowDropDown", "" 弹出组合框(ComboBox)的下拉列表

cashiba 发表于 2016-4-16 11:56:57

请看帮助文件这个函数的使用。
heroxianf 发表于 2016-4-15 23:50 http://www.autoitx.com/images/common/back.gif
帮助:http://www.autoitx.com/Doc/html/functions/controlcommand.htm
ControlCommand ( "目标窗口标题", "目标窗口文本", 控件ID, "命令" [, "选项"] )
命令:
"SelectString", '字符串' 通过指定字符串把 ListBox 或 ComboBox 的当前选择项设为匹配字符串的项目.
"SetCurrentSelection", 出现次序 通过指定出现次序(从0开始,0 代表第一个)把 ListBox 或 ComboBox 的当前选择项设为指定的项目.
"GetCurrentSelection", "" 返回 ListBox 或 ComboBox 控件当前选中的项目名.
语法应用有错误吗?

cashiba 发表于 2016-4-16 12:01:42

"ShowDropDown", "" 弹出组合框(ComboBox)的下拉列表
131738 发表于 2016-4-16 09:44 http://www.autoitx.com/images/common/back.gif
然后通过send发送{down}来选择吗?
为啥前述的几个控件命令都没反应呢,难道是控件ID不是唯一的或取值有错误?

131738 发表于 2016-4-16 12:12:26

然后通过send发送{down}来选择吗?
为啥前述的几个控件命令都没反应呢,难道是控件ID不是唯一的或取值有 ...
cashiba 发表于 2016-4-16 12:01 http://www.autoitx.com/images/common/back.gif

没用过你的这个用法, 只是猜想的,按常规操作,应该是先打开下拉列表再选择,
因此你不妨在:
Local $cnt = ControlCommand($H2, "", "", "SetCurrentSelection", 3)
Local $cns = ControlCommand($H2, "", "", "SelectString", '项目C‘)
之前添加: ShowDropDown 命令试试看.........

heroxianf 发表于 2016-4-16 12:15:57

回复 4# cashiba



这是我测试的 你卡看,不然你就要用大神131738的方法了。

131738 发表于 2016-4-16 12:36:54

回复cashiba



这是我测试的 你卡看,不然你就要用大神131738的方法了。
heroxianf 发表于 2016-4-16 12:15 http://www.autoitx.com/images/common/back.gif

OK..........你是大神!!!!!!

heroxianf 发表于 2016-4-16 13:01:05

本帖最后由 heroxianf 于 2016-4-16 13:09 编辑

回复 8# 131738

折杀小弟我了,向你学习。楼主最后一句代码标点符号有点不对的样子。Local $cns = ControlCommand($H2, "", "", "SelectString", '项目C‘)修改后Local $cns = ControlCommand($H2, "", "", "SelectString", '项目C')

cashiba 发表于 2016-4-16 13:11:10

回复cashiba
这是我测试的 你卡看,不然你就要用大神131738的方法了。
heroxianf 发表于 2016-4-16 12:15 http://www.autoitx.com/images/common/back.gif感谢xianf英雄提供这么好的测试界面!你这个用得很顺畅。我用得不顺,估计是窗口里控件套着控件,关系复杂些,用窗口信息工具取值不准确。但是奇怪的是同样的类标识,能够将光标定位到编辑框里,却对命令没反应

cashiba 发表于 2016-4-16 13:19:07

我觉得我的语法从形式上应该没错误。看到heroxianf大神的成功例子,我顿时又信心了{:face (125):}
WinActivate("GImageX v2")
ControlCommand("GImageX v2", "", "", "SelectString", "none");test
ControlCommand("GImageX v2", "", "", "SelectString", "serverstandard");test我觉得成功有两点:
1、类名取值准确
2、WinActivate
帮助文件里特别提到:

备 注
除非控件窗口处于活动状态, 否则控件不会响应这些命令.
使用 ControlCommand() 之前, 必须调用 WinActivate() 函数强制控件窗口激活为顶层窗口.
某些命令能工作于正常的 Combo 与 ListBoxes 控件, 但对 "ComboLBox" 控件无效.
还得好好测试和体会
非常感谢两位大师....{:face (288):}

cashiba 发表于 2016-4-16 13:25:57

回复131738
折杀小弟我了,向你学习。楼主最后一句代码标点符号有点不对的样子。修改后
heroxianf 发表于 2016-4-16 13:01 http://www.autoitx.com/images/common/back.gif在原代码里检查没写错,运行也没报错。可能是发帖子时切换中英文弄出来的,heroxianf 老师这么细心,真是佩服!{:face (88):}

heroxianf 发表于 2016-4-16 13:34:24

回复 12# cashiba


都是论坛大神调教的好~   你最好试试 131738大神的方法,可以完成的。

heroxianf 发表于 2016-4-16 13:47:53

回复 3# 131738


    我想请教一下 如何读取combobox选中的值呢?

131738 发表于 2016-4-16 15:17:02

回复 14# heroxianf

是不是这个呢..........?????????????
    GUICtrlRead($ComboBox)
页: [1] 2
查看完整版本: 如何选定编辑框下拉列表中的某一项值?