找回密码
 加入
搜索
查看: 3377|回复: 9

[AU3基础] 已完成-求教,如何将重复执行的代码,简单调用?

  [复制链接]
发表于 2015-9-30 12:47:38 | 显示全部楼层 |阅读模式
本帖最后由 pzypdl2006 于 2016-3-5 14:54 编辑

在写程序的时候有时,一段执行代码会被重复使用,那应该怎么精简呢?
能不能像变量一样,创建一个变量,使变量的值为重复的代码
然后再次使用重复的代码时候,就直接引用变量呢??

例如:
shellExecute("1.reg")
sleep(1000)
If WinActive("注册表编辑器") Then
ControlClick("注册表编辑器","是(&Y)","Button1")
sleep(1000)
ControlClick("注册表编辑器","确定","Button1")
sleep(5000)
shellExecute("2.reg")
sleep(1000)
If WinActive("注册表编辑器") Then
ControlClick("注册表编辑器","是(&Y)","Button1")
sleep(1000)
ControlClick("注册表编辑器","确定","Button1")
sleep(5000)
shellExecute("3.reg")
sleep(1000)
If WinActive("注册表编辑器") Then
ControlClick("注册表编辑器","是(&Y)","Button1")
sleep(1000)
ControlClick("注册表编辑器","确定","Button1")
sleep(5000)
其中
sleep(1000)
If WinActive("注册表编辑器") Then
ControlClick("注册表编辑器","是(&Y)","Button1")
sleep(1000)
ControlClick("注册表编辑器","确定","Button1")
sleep(5000)
这段代码为重复使用的代码!
发表于 2015-9-30 13:17:14 | 显示全部楼层
Local $file[3] = ["1.reg","2.reg","3.reg"]
For $i = 0 To 2
        _Hanshu($file[$i])
Next
Func _Hanshu($filename)
        shellExecute($filename)
        sleep(1000)
        If WinActive("注册表编辑器") Then
                ControlClick("注册表编辑器","是(&Y)","Button1")
                sleep(1000)
                ControlClick("注册表编辑器","确定","Button1")
                sleep(5000)
        EndIf
EndFunc
楼主的代码执行没错误吗?只有IF,你的endif呢????
 楼主| 发表于 2015-9-30 14:22:31 | 显示全部楼层
回复 2# ap112

在论坛里给你endif了
 楼主| 发表于 2015-9-30 14:25:35 | 显示全部楼层
回复 2# ap112

在论坛里给你endif了

那如果重复的代码是出现在不连续的代码行列中,比如像遇到这样的重复代码就调用一下!
发表于 2015-10-7 14:37:40 | 显示全部楼层

For $i = 1 To 2
        ShellExecute($i & ".reg")
        Sleep(1000)
        If WinActive("注册表编辑器") Then
                ControlClick("注册表编辑器", "是(&Y)", "Button1")
                Sleep(1000)
                ControlClick("注册表编辑器", "确定", "Button1")
                Sleep(5000)
        EndIf
Next
发表于 2015-10-7 14:45:22 | 显示全部楼层
本帖最后由 xlj310 于 2015-10-7 15:20 编辑

其实你这个还可以更简单,虽然你没有问。我懂这方面就可以告诉你。
如果你的1.reg和2.reg……里的内容较多,做成reg文件当然比较好。如果较简单,则可以直接用Au3写注册表代码。下面有示例的!
如果做成.reg文件后想要导入,可以先加入一句,将注册表修改一下,就不会弹出确认提示了。


RegWrite("HKEY_CLASSES_ROOT\regfile\shell\open\command", "", "REG_SZ", 'regedit.exe /s "%1"')

For $i = 1 To 2
        ShellExecute($i & ".reg")
Next

这样代码就很简洁了。
发表于 2015-10-7 18:37:29 | 显示全部楼层
谢谢,又学了一招
 楼主| 发表于 2015-10-11 17:25:19 | 显示全部楼层
回复 6# xlj310

注册表文件不需要改动吧?直接把RegWrite()那句卸载au3文件里  是吗?
 楼主| 发表于 2015-10-13 11:37:25 | 显示全部楼层
回复 6# xlj310

是在au3文件的开始写入RegWrite.
搞定了  谢谢哦!

???
Func 函数
设置后,在运行的过程中;
发现有的机器能很快调用,有的机器却调用很慢?不知道什么原因?
发表于 2016-11-20 21:46:14 | 显示全部楼层
我是来学习的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 00:44 , Processed in 0.079411 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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