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

[AU3基础] (已解决)请教:如何把下面的代码改为第半小时执行

 火.. [复制链接]
发表于 2013-1-17 15:37:37 | 显示全部楼层 |阅读模式
本帖最后由 zym3138 于 2013-1-24 22:25 编辑

Local $Hour = 6
While $Hour <= 23
        If  @HOUR>=$Hour+1 then

如何把上面代码改为每隔半小时执行一then次后面的代码。
发表于 2013-1-17 20:02:21 | 显示全部楼层
adlibregister('func', 1800000)
发表于 2013-1-17 21:03:08 | 显示全部楼层
Dim $n = @MIN
While 1
        Switch @MIN
                Case $n
                        test()
                Case $n + 30
                        test()
                Case $n - 30
                        test()
        EndSwitch
WEnd

Func test()
        Sleep(100)
EndFunc   ;==>test
发表于 2013-1-17 21:16:51 | 显示全部楼层
回复 3# haijie1223

这个就不是执行一次了,而是在可以执行的那一分钟,不停地执行,另外,一个Case可以同时有多个匹配值
发表于 2013-1-17 21:20:35 | 显示全部楼层
回复 4# annybaby


    确实是~应该在函数里面加上个开关,保证每个case只运行一次。
 楼主| 发表于 2013-1-17 21:31:19 | 显示全部楼层
回复 2# netegg


   谢谢, 这种方法很好,可惜我不太会用func,能否请帮写下呢。我是要每隔30分钟启动一次then后面的一个软件。
 楼主| 发表于 2013-1-17 21:37:59 | 显示全部楼层
回复 3# haijie1223


    谢谢你的帮忙,我是要每隔30分钟执行一次then后面的代码,不是在符合条件时一直循环执行。
发表于 2013-1-17 21:42:28 | 显示全部楼层
回复 6# zym3138
func是自定义函数的函数名,函数随便你写,看看帮助写的,这个写的还是比较明白的,不太好描述清楚
 楼主| 发表于 2013-1-17 21:56:15 | 显示全部楼层
我在论坛中看了委很久,好像有点明白了,先试下再说吧。
发表于 2013-1-17 22:45:02 | 显示全部楼层
回复 7# zym3138
你就不能查一下adlibregister函数的帮助吗?
adlibregister('func', 1800000)
func func()
   ...   ;就是你then后面的
endfunc

评分

参与人数 1贡献 +1 收起 理由
annybaby + 1 我同意,所以一般F1可以解决的问题,好少出声

查看全部评分

发表于 2013-1-18 08:21:51 | 显示全部楼层
回复 4# annybaby
回复 7# zym3138
回复 10# xms77
窃以为注册函数的间隔时间太长,这样耗资源而且不是很准确。昨晚上的代码没有加开关,确实是有问题,因为忙着别的事情,没来得及修改,补上。欢迎拍砖
Dim $n = @MIN
Dim $kg = 1

While 1
        Switch @MIN
                Case $n
                        If $kg =1 Then Check()
                Case $n + 30
                        If $kg = 0 Then Check()
                Case $n - 30
                        If $kg = 0 Then Check()
        EndSwitch
WEnd

Func Check()
        If $n = @MIN Then $kg = 0
        If $n <> @MIN Then $kg = 1
        test()
EndFunc   ;==>Check

Func test()
        ConsoleWrite("=" & @CR)
EndFunc   ;==>test
 楼主| 发表于 2013-1-18 08:26:25 | 显示全部楼层
回复 10# xms77

While 1
adlibregister('test', 20000)
WEnd
Func test()
        Local $PID = ProcessExists("foobar2000.exe") ;代为sygate
        If  $PID Then
                ProcessClose("foobar2000.exe");代为sygate
        EndIf
EndFunc
Exit

这个代码问题出在哪,为何只执行到第3行,并一直循环,而没有执行后面的func下的代码呢
 楼主| 发表于 2013-1-18 08:29:06 | 显示全部楼层
回复 8# netegg


   While 1
adlibregister('test', 20000)
WEnd
Func test()
        Local $PID = ProcessExists("foobar2000.exe") ;代为sygate
        If  $PID Then
                ProcessClose("foobar2000.exe");代为sygate
        EndIf
EndFunc
Exit

这个代码问题出在哪,为何只执行到第3行,并一直循环,而没有执行后面的func下的代码呢,请帮我看看。
发表于 2013-1-18 08:29:51 | 显示全部楼层
回复 12# zym3138


    adlibregister放到while前面去
 楼主| 发表于 2013-1-18 08:42:53 | 显示全部楼层
回复 11# haijie1223

最后的func可以合并到上一个func吧,另外
     ConsoleWrite("=" & @CR )无法理解这一行代码,能解释一下吗、?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-18 03:45 , Processed in 0.098561 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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