zym3138 发表于 2013-1-17 15:37:37

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

本帖最后由 zym3138 于 2013-1-24 22:25 编辑

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

如何把上面代码改为每隔半小时执行一then次后面的代码。

netegg 发表于 2013-1-17 20:02:21

adlibregister('func', 1800000)

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

annybaby 发表于 2013-1-17 21:16:51

回复 3# haijie1223

这个就不是执行一次了,而是在可以执行的那一分钟,不停地执行,另外,一个Case可以同时有多个匹配值

haijie1223 发表于 2013-1-17 21:20:35

回复 4# annybaby


    确实是~应该在函数里面加上个开关,保证每个case只运行一次。

zym3138 发表于 2013-1-17 21:31:19

回复 2# netegg


   谢谢, 这种方法很好,可惜我不太会用func,能否请帮写下呢。我是要每隔30分钟启动一次then后面的一个软件。

zym3138 发表于 2013-1-17 21:37:59

回复 3# haijie1223


    谢谢你的帮忙,我是要每隔30分钟执行一次then后面的代码,不是在符合条件时一直循环执行。

netegg 发表于 2013-1-17 21:42:28

回复 6# zym3138
func是自定义函数的函数名,函数随便你写,看看帮助写的,这个写的还是比较明白的,不太好描述清楚

zym3138 发表于 2013-1-17 21:56:15

我在论坛中看了委很久,好像有点明白了,先试下再说吧。

xms77 发表于 2013-1-17 22:45:02

回复 7# zym3138
你就不能查一下adlibregister函数的帮助吗?
adlibregister('func', 1800000)
func func()
   ...   ;就是你then后面的
endfunc

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

zym3138 发表于 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下的代码呢

zym3138 发表于 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下的代码呢,请帮我看看。

haijie1223 发表于 2013-1-18 08:29:51

回复 12# zym3138


    adlibregister放到while前面去

zym3138 发表于 2013-1-18 08:42:53

回复 11# haijie1223

最后的func可以合并到上一个func吧,另外
   ConsoleWrite("=" & @CR )无法理解这一行代码,能解释一下吗、?
页: [1] 2
查看完整版本: (已解决)请教:如何把下面的代码改为第半小时执行