howacter 发表于 2010-1-10 06:01:49

求教:怎样让程序在占用CPU较少的情况下一直运行

本帖最后由 howacter 于 2010-1-11 02:05 编辑

今天写了个半自动保存网页图片的脚本,用的while()无限循环,
但这样CPU 使用率高达50%,不知怎么解决。$HotKey="f"
$choose=MsgBox(4,'热键确定','默认的热键是 f 键,若想改变则按否')
If $choose=7 Then
        $HotKey=InputBox("热键确定","请输入你喜欢的热键","f")
EndIf
HotKeySet($HotKey,"toggle")
$toggle=0
While 1
        If $toggle Then
                MouseClick("right")
                Send("s")
                Send("!s")
                If WinWaitActive("保存图片","已存在",1) Then
                        Send("{enter}")
                        Send(Random(0,500,1))
                        Send("!s")
                EndIf
                $toggle=Not $toggle
        EndIf
WEnd
Func toggle()
        $toggle=Not $toggle
EndFunc

       

ceoguang 发表于 2010-1-10 07:55:08

$HotKey = "f"
$choose = MsgBox(4, '热键确定', '默认的热键是 f 键,若想改变则按否')
If $choose = 7 Then
        $HotKey = InputBox("热键确定", "请输入你喜欢的热键", "f")
EndIf
HotKeySet($HotKey, "toggle")
$toggle = 0
While 1
        If $toggle Then
                MouseClick("right")
                Send("s")
                Send("!s")
                If WinWaitActive("保存图片", "已存在", 1) Then
                        Send("{enter}")
                        Send(Random(0, 500, 1))
                        Send("!s")
                EndIf
                $toggle = Not $toggle
        EndIf
        Sleep(1)
WEnd
Func toggle()
        $toggle = Not $toggle
EndFunc   ;==>toggle

howacter 发表于 2010-1-11 00:51:23

昨天看了下教程,基本解决了这个问题。
$HotKey="f"
$name=0
$choose=MsgBox(4,'热键确定','默认的热键是 f 键,若想改变则按否')
If $choose=7 Then
        $HotKey=InputBox("热键确定","请输入你喜欢的热键","f")
EndIf
HotKeySet($HotKey,"SavePic")
$toggle=False

While 1
        Sleep(100)
WEnd

Func SavePic()
        $toggle=Not $toggle
        While $toggle
                MouseClick("right")
                Send("s")
                WinWaitActive("保存图片","保存在")
                Send("!s")
                If WinWaitActive("保存图片","已存在",1) Then
                        Send("{enter}")
                        $name+=1
                        Send($name)
                        Send("!s")
                EndIf
                $toggle=Not $toggle
        WEnd
EndFunc

afan 发表于 2010-1-11 00:53:22

回复 3# howacter


    如2#所示,加个sleep()就OK了

howacter 发表于 2010-1-11 01:03:18

回复 4# afan
我试了下,确实可以,CPU使用率只有1%左右,谢谢2#和4#对该问题的关注。

howacter 发表于 2010-1-11 02:04:23

问个我不清楚的简单问题,希望各位莫怪。请问怎么改变帖子的分类,将帖子从【未解决问题区】
移到【已解决问题区】,我用了“编辑”后不知道从哪里改。

afan 发表于 2010-1-11 02:08:02

回复 6# howacter

未解决问题区没有分类……
所以以后请不要在未解决问题区发帖,直接在父版块提问交流发帖,解决了就可以改为解决,N久解决不了才改为未解决~

howacter 发表于 2010-1-11 02:15:06

哦,原来是这样啊,谢谢老大的回答!

gapkiller 发表于 2010-1-11 17:59:26

迷糊...接着迷糊
页: [1]
查看完整版本: 求教:怎样让程序在占用CPU较少的情况下一直运行