找回密码
 加入
搜索
查看: 6859|回复: 26

[网络通信] 已解决 如何实现控件参数的 简易修改

[复制链接]
发表于 2020-9-2 14:37:01 | 显示全部楼层 |阅读模式
本帖最后由 itzyx 于 2020-9-4 21:45 编辑
MouseClick("left",154,43,1)
sleep(500)
MouseClick("left",184,68,1)
sleep(1000)
WinWaitActive("物品参数设置")
sleep(500)
ControlCommand("物品参数设置","","ComboBox1","SetCurrentSelection", "0")
sleep(500)
ControlClick("物品参数设置","","Button10","",1)
sleep(500)
ControlSetText("物品参数设置","","Edit1",2000)
sleep(500)
ControlSetText("物品参数设置","","Edit4",1900)
sleep(500)
ControlSetText("物品参数设置","","Edit6",800)
sleep(500)
ControlSetText("物品参数设置","","Edit8",600)
sleep(500)
ControlCommand("物品参数设置","","ComboBox5","SetCurrentSelection", "2")
sleep(500)
ControlSetText("物品参数设置","","Edit10",500)
ControlClick("物品参数设置","","Button1","",1)
sleep(2000)


各位大佬,这个代码里面的 Edit 参数是需要修改的,总共要修改四五组参数,我可以实现这个功能,但是每次都要再写一段代码,然后只修改其中的Edit参数,这样整个代码显得特别冗长。 所以 各位大佬有没有简单一点的办法实现这个控件参数修改的功能,如果能通过配置文件,只修改配置文件的参数,来实现软件里面的控件读取,替换就更好了, 万分感谢!
 楼主| 发表于 2020-9-2 14:39:51 | 显示全部楼层
因为这个Edit控件参数, 严格上讲是没有逻辑关系的,所以每次再写一段代码,就显得特别头疼
发表于 2020-9-2 15:46:08 | 显示全部楼层
提供一个思路:haijie1223大神的帖子代码,巧用数组:

https://www.autoitx.com/forum.ph ... amp;_dsign=4ae3aaa6
发表于 2020-9-2 22:01:07 | 显示全部楼层
這樣說明應該沒啥人可以聽得懂..........是不是應該在 你的程式裡面 重複 你說的重複的部分  

這樣大家可以看得懂以外  還可以協助你精簡 你的程式 才對吧
 楼主| 发表于 2020-9-2 23:08:24 | 显示全部楼层
kk_lee69 发表于 2020-9-2 22:01
這樣說明應該沒啥人可以聽得懂..........是不是應該在 你的程式裡面 重複 你說的重複的部分  

這樣大家 ...

是我的错,没有表达清楚,我说具体点,意思就是代码里面 我想通过 ControlSetText 这个命令,来填写控件 类别名为EDIT 编辑框里面的参数, 但是首先这个类别名不是统一的(有Edit1,4,6,8),其次这个输入的参数也不是统一的(Edit1 可以等于2000,1000,500等),因为控件比较多,参数比较多,如果我想实现一套自动化程序, 用我的方法需要写很多类似,重复的代码,所以请教各位大佬 能不能精简一下,或者用更好的方法实现 。比如参数可以自动修改; 读取,替换,写入配置文件的方法等等。
发表于 2020-9-3 01:43:09 | 显示全部楼层
itzyx 发表于 2020-9-2 23:08
是我的错,没有表达清楚,我说具体点,意思就是代码里面 我想通过 ControlSetText 这个命令,来填写控件  ...

用我的方法需要写很多类似,重复的代码,所以请教各位大佬 能不能精简一下

那就先提供 重覆代碼的 程式 範例吧
 楼主| 发表于 2020-9-4 00:39:26 | 显示全部楼层
kk_lee69 发表于 2020-9-3 01:43
用我的方法需要写很多类似,重复的代码,所以请教各位大佬 能不能精简一下

那就先提供 重覆代碼的 程 ...

大佬,我想了一天,还没搞懂您的意思 ,实在无奈,我这种小白确实比较菜,还望您能够指定一二,必定虚心学习 。 重复的代码,就是我上面写的代码,这只是其中一段,总共有四段差不多一样的代码,只是参数变化了一下,其他的命令都没变 。至于 您说的程式 范例,难倒我了啊
发表于 2020-9-4 00:53:44 | 显示全部楼层
将要改变的写入xxx.ini文件:
[测试]
Edit1=2000
Edit4=1900
Edit6=800
Edit8=600

再将脚本中的相关代码修改,如将
ControlSetText("物品参数设置","","Edit1", 2000)
改为
ControlSetText("物品参数设置","","Edit1", IniRead('xxx.ini', '测试', 'Edit1', 'err'))

ControlSetText  这些动作不需要等待,没必要设置 Sleep 的……
发表于 2020-9-4 01:26:37 | 显示全部楼层
itzyx 发表于 2020-9-4 00:39
大佬,我想了一天,还没搞懂您的意思 ,实在无奈,我这种小白确实比较菜,还望您能够指定一二,必定虚心 ...

既然有四段 為何不把四段 全部列出............

其他想幫助你的 就會從你列出的 四段 去看出規則..............

會幫你簡化.................

你不列出...........豈不是要幫你的 還得 去理解你的意思 想法  猜想 是怎樣的四段 怎麼樣的重複方式  跟怎樣的小變化??
 楼主| 发表于 2020-9-4 08:35:17 | 显示全部楼层
本帖最后由 itzyx 于 2020-9-4 08:41 编辑
kk_lee69 发表于 2020-9-4 01:26
既然有四段 為何不把四段 全部列出............

其他想幫助你的 就會從你列出的 四段 去看出規則..... ...

嗯嗯,是我疏忽了,害怕列出来太长,没什么用,下次会多留意的
MouseClick("left",154,43,1)
sleep(500)
MouseClick("left",184,68,1)
sleep(1000)
WinWaitActive("物品参数设置")
sleep(500)
ControlCommand("物品参数设置","","ComboBox1","SetCurrentSelection", "0")
sleep(500)
ControlClick("物品参数设置","","Button10","",1)
sleep(500)
ControlSetText("物品参数设置","","Edit1",2000)
sleep(500)
ControlSetText("物品参数设置","","Edit4",1900)
sleep(500)
ControlSetText("物品参数设置","","Edit6",800)
sleep(500)
ControlSetText("物品参数设置","","Edit8",600)
sleep(500)
ControlCommand("物品参数设置","","ComboBox5","SetCurrentSelection", "2")
sleep(500)
ControlSetText("物品参数设置","","Edit10",500)
ControlClick("物品参数设置","","Button1","",1)
sleep(2000)
;设置好参数,开始运行程序,第一段参数运行完,就开始设置第二段参数
MouseClick("left",154,43,1)
sleep(500)
MouseClick("left",184,68,1)
sleep(1000)
WinWaitActive("物品参数设置")
sleep(500)
ControlCommand("物品参数设置","","ComboBox1","SetCurrentSelection", "0")
sleep(500)
ControlClick("物品参数设置","","Button10","",1)
sleep(500)
ControlSetText("物品参数设置","","Edit1",1000)
sleep(500)
ControlSetText("物品参数设置","","Edit4",900)
sleep(500)
ControlSetText("物品参数设置","","Edit6",800)
sleep(500)
ControlSetText("物品参数设置","","Edit8",300)
sleep(500)
ControlCommand("物品参数设置","","ComboBox5","SetCurrentSelection", "2")
sleep(500)
ControlSetText("物品参数设置","","Edit10",500)
ControlClick("物品参数设置","","Button1","",1)
sleep(2000)
;第二段参数只修改了四个edit 里面的内容,改为:1000,900,800,300, 第二段参数设置好,运行程序,之后运行第三段参数
MouseClick("left",154,43,1)
sleep(500)
MouseClick("left",184,68,1)
sleep(1000)
WinWaitActive("物品参数设置")
sleep(500)
ControlCommand("物品参数设置","","ComboBox1","SetCurrentSelection", "0")
sleep(500)
ControlClick("物品参数设置","","Button10","",1)
sleep(500)
ControlSetText("物品参数设置","","Edit1",427)
sleep(500)
ControlSetText("物品参数设置","","Edit4",400)
sleep(500)
ControlSetText("物品参数设置","","Edit6",800)
sleep(500)
ControlSetText("物品参数设置","","Edit8",128)
sleep(500)
ControlCommand("物品参数设置","","ComboBox5","SetCurrentSelection", "2")
sleep(500)
ControlSetText("物品参数设置","","Edit10",500)
ControlClick("物品参数设置","","Button1","",1)
sleep(2000)
:同上
MouseClick("left",154,43,1)
sleep(500)
MouseClick("left",184,68,1)
sleep(1000)
WinWaitActive("物品参数设置")
sleep(500)
ControlCommand("物品参数设置","","ComboBox1","SetCurrentSelection", "0")
sleep(500)
ControlClick("物品参数设置","","Button10","",1)
sleep(500)
ControlSetText("物品参数设置","","Edit1",213)
sleep(500)
ControlSetText("物品参数设置","","Edit4",210)
sleep(500)
ControlSetText("物品参数设置","","Edit6",800)
sleep(500)
ControlSetText("物品参数设置","","Edit8",64)
sleep(500)
ControlCommand("物品参数设置","","ComboBox5","SetCurrentSelection", "2")
sleep(500)
ControlSetText("物品参数设置","","Edit10",500)
ControlClick("物品参数设置","","Button1","",1)
sleep(2000)
;总的来说,四段代码,主要需要修改的就四个参数edit 1,2,3,4, 其他的参数第一段代码运行完之后,软件会有记忆功能,不用再输第二次(这里我直接复制粘贴,就没删除多余的了)。而edit四个参数其中 edit2 只要小于 接近 edit1就行,其他edit1,3,4 都是不固定的参数,我要把这几组参数都运行一遍 才行
 楼主| 发表于 2020-9-4 08:55:16 | 显示全部楼层
afan 发表于 2020-9-4 00:53
将要改变的写入xxx.ini文件:
[测试]
Edit1=2000

好的,谢谢,我以为代码之间都要加延迟呢;
不过A大您这个方法 我考虑过,但是控件不同,是不是还要输入四个代码,比如参数输入到edit4里面
[测试]
Edit1=2000
Edit4=1900
Edit6=800
Edit8=600
ControlSetText("物品参数设置","","Edit4", IniRead('xxx.ini', '测试', 'Edit4', 'err'))

我能不能把我的参数 都写到配置文件 里面,比如
Edit1=A,B,C,D
Edit4=A1,B1,C2,D2
Edit6=A3,B3,C3,D3
Edit8=A4,B4,C4,D4
(当然这里 Edit1应该不能同时=A,B,C,D)
然后就写一段代码,分别第一次运行A,A1,A2,A3 ;  第二次运行 B,B1,B2,B3  以此类推,不知道可行

发表于 2020-9-4 09:14:29 | 显示全部楼层
可以这样
例子:
_SetText(2000, 1900, 800, 600)
_SetText(1000, 900, 800, 300)
_SetText(427, 400, 800, 128)
_SetText(213, 210, 800, 64)

Func _SetText($Edit1, $Edit4, $Edit6, $Edit8)
        MouseClick("left", 154, 43, 1)
        Sleep(500)
        MouseClick("left", 184, 68, 1)
        Sleep(1000)
        WinWaitActive("物品参数设置")
        Sleep(500)
        ControlCommand("物品参数设置", "", "ComboBox1", "SetCurrentSelection", "0")
        Sleep(500)
        ControlClick("物品参数设置", "", "Button10", "", 1)
        Sleep(500)
        ControlSetText("物品参数设置", "", "Edit1", $Edit1)
        Sleep(500)
        ControlSetText("物品参数设置", "", "Edit4", $Edit4)
        Sleep(500)
        ControlSetText("物品参数设置", "", "Edit6", $Edit6)
        Sleep(500)
        ControlSetText("物品参数设置", "", "Edit8", $Edit8)
        Sleep(500)
        ControlCommand("物品参数设置", "", "ComboBox5", "SetCurrentSelection", "2")
        Sleep(500)
        ControlSetText("物品参数设置", "", "Edit10", 500)
        ControlClick("物品参数设置", "", "Button1", "", 1)
        Sleep(2000)
EndFunc   ;==>_SetText
发表于 2020-9-4 09:38:10 | 显示全部楼层
itzyx 发表于 2020-9-4 08:55
好的,谢谢,我以为代码之间都要加延迟呢;
不过A大您这个方法 我考虑过,但是控件不同,是不是还要输入 ...

IniRead 当然要读取对应的键到对应的值,这是再基础不过了
你这只有4个要改,直接复制粘贴一遍很容易。如果是40个控件,就用循环处理也简单。
发表于 2020-9-4 10:08:07 | 显示全部楼层
本帖最后由 gyp2000 于 2020-9-4 10:10 编辑
itzyx 发表于 2020-9-4 08:55
好的,谢谢,我以为代码之间都要加延迟呢;
不过A大您这个方法 我考虑过,但是控件不同,是不是还要输入 ...

ini每个条目可以保存一组数据,只是ini过大的话,AU3内置函数是无法读取全部内容的。


#include <Array.au3>
Global $aArray[4] ,$bArray, $text ;申明变量
$aArray[0] = 10
$aArray[1] = 20
$aArray[2] = 30
$aArray[3] = 40
$text = _ArrayToString($aArray, ";") ;数组转字符串
;保存方案
IniWrite ( @ScriptDir&"\test.ini", "字段", "方案1", $text )
;
;
;
;读取方案
$text =IniRead ( @ScriptDir&"\test.ini", "字段", "方案1", "")
$bArray = StringSplit ( $text, ";" , 2 ) ;字符串转数组
If @error Then Exit
;输出数组内容
ConsoleWrite($bArray[0]&@CRLF)
ConsoleWrite($bArray[1]&@CRLF)
ConsoleWrite($bArray[2]&@CRLF)
ConsoleWrite($bArray[3]&@CRLF)
 楼主| 发表于 2020-9-4 12:42:45 | 显示全部楼层
afan 发表于 2020-9-4 09:38
IniRead 当然要读取对应的键到对应的值,这是再基础不过了
你这只有4个要改,直接复制粘贴一遍很容易。 ...

确实,少的话复制粘贴一遍比较容易 ,不过 A大 你说的控件多的话 一般怎么循环处理啊?可以学习一下嘛
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-2 06:10 , Processed in 0.080070 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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