Board logo

标题: [问题求助] VBS闹钟的核心代码一样,为何其中一个这么占cup? [打印本页]

作者: FOR    时间: 2012-11-21 17:32     标题: VBS闹钟的核心代码一样,为何其中一个这么占cup?

核心代码一样,为何其中一个这么占cup
学习vbs
在网上找了个闹钟的代码,自以为看懂了,于是依葫芦画瓢自己也写了一个
可为何我的代码一运行cup就飙到 25,而别人的却是0
仔细研究了一天,实在是找不出原因来了,头都快炸了,请各位大神帮忙解惑。

代码一,网上找的
  1. on error resume next
  2. set ws=createobject("wscript.shell")
  3. set fso=createobject("scripting.filesystemobject")
  4. do
  5. 't=inputbox("注意:本程序只考虑到分种")
  6. t=2359
  7. if t="" then
  8. wscript.quit
  9. elseif IsNumeric(t)=false  then
  10. msgbox "输入错误,请重新输入!",16+4096,"错误"
  11. elseif len(t)<>4 or left(t,2)>24 or right(t,2)>59 then
  12. msgbox "输入错误,请重新输入!",16+4096,"错误"
  13. else
  14. call naoling()
  15. end if
  16. loop
  17. sub naoling()
  18. shi=left(t,2)
  19. fen=right(t,2)
  20. do
  21. if timer>3600*shi+60*fen then
  22. ws.run "cmd /c @echo ",0,true
  23. sfjx=Ws.Popup("时间已到,是否继续运行闹铃程序?"& vbcrlf & "如果不退出闹铃将在1分钟后继续提醒。", 10, "闹铃提醒", 4 + 32)
  24. if sfjx=7 then
  25. wscript.quit
  26. else
  27. wscript.sleep 1000*60
  28. end if
  29. end if
  30. wscript.sleep 1000
  31. loop
  32. end sub
复制代码
代码二,我自己写的,狂占cup
  1. set ws=WScript.CreateObject("WScript.Shell")
  2. t=time:t1=int(timer)
  3. do
  4. a=20
  5. if a=false then
  6. Wscript.Quit           '判断若点了关闭按钮则退出
  7. elseif IsNumeric(a)=false  then
  8. msgbox "输入错误,请重新输入!",16+4096,"错误"
  9. else exit do
  10. end if
  11. loop
  12. ts=inputbox("输入提示信息","提示","提示")
  13. if ts=false then Wscript.Quit           '判断若点了关闭按钮则退出
  14. a1=a*60+t1
  15. fen=((a mod 60)+minute(t)) mod 60
  16. shi=int(a/60+hour(t))
  17. if (a mod 60)+minute(t)>=60 then shi=shi+1
  18. s="00"&shi:f="00"&fen
  19. msgbox "启动时间 "&right(s,2)&":"&right(f,2)
  20. do
  21. if timer>=a1 then
  22. ws.run "cmd /c @echo ",0,true
  23. f=Ws.Popup("时间已到,是否继续运行闹铃程序?"& vbcrlf & "如果不退出闹铃将在1分钟后继续提醒。", 10, "闹铃提醒", 4 + 32)
  24. If (f = 7 ) Then
  25. Wscript.Quit
  26. else
  27. wscript.sleep 1000*5
  28. end if
  29. wscript.sleep 1000
  30. end if
  31. loop
复制代码

作者: FOR    时间: 2012-11-21 18:24

上帝啊,总算找到原因了,原来是 do loop 循环的太快了,要给它加个延时
  1. do
  2.      if a="aa" then msgbox "hh"
  3.      wscript.sleep 1000 '没有这一行的原因
  4. loop
复制代码

作者: czjt1234    时间: 2012-11-23 08:22

cpu  不是  cup




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2