找回密码
 加入
搜索
查看: 5837|回复: 21

[AU3基础] 如何选定编辑框下拉列表中的某一项值?

  [复制链接]
发表于 2016-4-15 22:37:25 | 显示全部楼层 |阅读模式
本帖最后由 cashiba 于 2016-4-17 11:35 编辑


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


下拉列表编辑框的父窗句柄为$H2
下拉列表编辑框的类名为[CLASS:comlistbox; INSTANCE:7](AU3窗口信息工具取得)。


ControlFocus($H2,"","[CLASS:comlistbox; INSTANCE:7]")
可以把光标定位于该编辑框内。

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-4-15 23:50:25 | 显示全部楼层
发送命令到控件.
ControlCommand("标题", "文本", 控件ID, "命令"[, "选项"])
请看帮助文件这个函数的使用。
发表于 2016-4-16 09:44:01 | 显示全部楼层
"ShowDropDown", "" 弹出组合框(ComboBox)的下拉列表
 楼主| 发表于 2016-4-16 11:56:57 | 显示全部楼层
请看帮助文件这个函数的使用。
heroxianf 发表于 2016-4-15 23:50

帮助:http://www.autoitx.com/Doc/html/functions/controlcommand.htm
ControlCommand ( "目标窗口标题", "目标窗口文本", 控件ID, "命令" [, "选项"] )
命令:
"SelectString", '字符串' 通过指定字符串把 ListBox 或 ComboBox 的当前选择项设为匹配字符串的项目.
"SetCurrentSelection", 出现次序 通过指定出现次序(从0开始,0 代表第一个)把 ListBox 或 ComboBox 的当前选择项设为指定的项目.
"GetCurrentSelection", "" 返回 ListBox 或 ComboBox 控件当前选中的项目名.

语法应用有错误吗?
 楼主| 发表于 2016-4-16 12:01:42 | 显示全部楼层
"ShowDropDown", "" 弹出组合框(ComboBox)的下拉列表
131738 发表于 2016-4-16 09:44

然后通过send发送{down}来选择吗?
为啥前述的几个控件命令都没反应呢,难道是控件ID不是唯一的或取值有错误?
发表于 2016-4-16 12:12:26 | 显示全部楼层
然后通过send发送{down}来选择吗?
为啥前述的几个控件命令都没反应呢,难道是控件ID不是唯一的或取值有 ...
cashiba 发表于 2016-4-16 12:01


没用过你的这个用法, 只是猜想的,按常规操作,应该是先打开下拉列表再选择,
因此你不妨在:
Local $cnt = ControlCommand($H2, "", "[CLASS:comlistbox; INSTANCE:7]", "SetCurrentSelection", 3)
Local $cns = ControlCommand($H2, "", "[CLASScomlistbox; INSTANCE:7]", "SelectString", '项目C‘)
之前添加: ShowDropDown 命令试试看.........
发表于 2016-4-16 12:15:57 | 显示全部楼层
回复 4# cashiba



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-4-16 12:36:54 | 显示全部楼层
回复  cashiba



这是我测试的 你卡看,不然你就要用大神131738的方法了。
heroxianf 发表于 2016-4-16 12:15


OK..........你是大神!!!!!!
发表于 2016-4-16 13:01:05 | 显示全部楼层
本帖最后由 heroxianf 于 2016-4-16 13:09 编辑

回复 8# 131738

折杀小弟我了,向你学习。楼主最后一句代码标点符号有点不对的样子。
Local $cns = ControlCommand($H2, "", "[CLASScomlistbox; INSTANCE:7]", "SelectString", '项目C‘)
修改后
Local $cns = ControlCommand($H2, "", "[CLASScomlistbox; INSTANCE:7]", "SelectString", '项目C')
 楼主| 发表于 2016-4-16 13:11:10 | 显示全部楼层
回复  cashiba
这是我测试的 你卡看,不然你就要用大神131738的方法了。
heroxianf 发表于 2016-4-16 12:15
感谢xianf英雄提供这么好的测试界面!你这个用得很顺畅。我用得不顺,估计是窗口里控件套着控件,关系复杂些,用窗口信息工具取值不准确。但是奇怪的是同样的类标识,能够将光标定位到编辑框里,却对命令没反应
 楼主| 发表于 2016-4-16 13:19:07 | 显示全部楼层
我觉得我的语法从形式上应该没错误。看到heroxianf大神的成功例子,我顿时又信心了
WinActivate("GImageX v2")
ControlCommand("GImageX v2", "", "[CLASS:ComboBox; INSTANCE:1]", "SelectString", "none")  ;test
ControlCommand("GImageX v2", "", "[CLASS:ComboBox; INSTANCE:2]", "SelectString", "serverstandard")  ;test
我觉得成功有两点:
1、类名取值准确
2、WinActivate
帮助文件里特别提到:
备 注
除非控件窗口处于活动状态, 否则控件不会响应这些命令.
使用 ControlCommand() 之前, 必须调用 WinActivate() 函数强制控件窗口激活为顶层窗口.
某些命令能工作于正常的 Combo 与 ListBoxes 控件, 但对 "ComboLBox" 控件无效.

还得好好测试和体会
非常感谢两位大师....
 楼主| 发表于 2016-4-16 13:25:57 | 显示全部楼层
回复  131738
折杀小弟我了,向你学习。楼主最后一句代码标点符号有点不对的样子。修改后
heroxianf 发表于 2016-4-16 13:01
在原代码里检查没写错,运行也没报错。可能是发帖子时切换中英文弄出来的,heroxianf 老师这么细心,真是佩服!
发表于 2016-4-16 13:34:24 | 显示全部楼层
回复 12# cashiba


都是论坛大神调教的好~     你最好试试 131738大神的方法,可以完成的。
发表于 2016-4-16 13:47:53 | 显示全部楼层
回复 3# 131738


    我想请教一下 如何读取combobox选中的值呢?
发表于 2016-4-16 15:17:02 | 显示全部楼层
回复 14# heroxianf

是不是这个呢..........?????????????
    GUICtrlRead($ComboBox)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 03:53 , Processed in 0.091672 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表