pzypdl2006 发表于 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)
这段代码为重复使用的代码!

ap112 发表于 2015-9-30 13:17:14

Local $file = ["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呢????

pzypdl2006 发表于 2015-9-30 14:22:31

回复 2# ap112

在论坛里给你endif了

pzypdl2006 发表于 2015-9-30 14:25:35

回复 2# ap112

在论坛里给你endif了

那如果重复的代码是出现在不连续的代码行列中,比如像遇到这样的重复代码就调用一下!

xlj310 发表于 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

xlj310 发表于 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

这样代码就很简洁了。

nqawen 发表于 2015-10-7 18:37:29

谢谢,又学了一招

pzypdl2006 发表于 2015-10-11 17:25:19

回复 6# xlj310

注册表文件不需要改动吧?直接把RegWrite()那句卸载au3文件里是吗?

pzypdl2006 发表于 2015-10-13 11:37:25

回复 6# xlj310

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

???
Func 函数
设置后,在运行的过程中;
发现有的机器能很快调用,有的机器却调用很慢?不知道什么原因?

zhzhtx 发表于 2016-11-20 21:46:14

我是来学习的
页: [1]
查看完整版本: 已完成-求教,如何将重复执行的代码,简单调用?