Board logo

标题: [原创] 灵活的VBS倒计时关机程序 [打印本页]

作者: 9zhmke    时间: 2013-12-18 10:37     标题: 灵活的VBS倒计时关机程序

这篇稿子写出来过后自我感觉界面还可以,效果还不错
1、可以在界面中随时更改关机的时间。
2、关掉程序即取消定时关机。
3、默认以分钟数作为关机时间,如果输入冒号,则把冒号前面的作为小时数处理。
4、可以兼容以全角输入的数字和冒号。
但是有个问题没解决是:弹出的提示框未处于被聚焦状态,需要鼠标定位点击后才能输入,请知道的指点一下解决方法。
  1. '直接输入数字就是按所输入数字的分钟数后关机
  2. '如果用冒号隔开则把小时和分钟一起计算
  3. '可以随时更改关机时间
  4. Dim WshShell,ip,Net_test,addr,str,i,count,speed
  5. Set WshShell=CreateObject("shell.application")
  6. WshShell.MinimizeAll
  7. Set WshShell=createobject("wscript.shell")
  8. Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
  9. set ie=wscript.createobject("internetexplorer.application","event_") '创建ie对象'
  10. ie.fullscreen=0 '不使用全屏
  11. ie.menubar=0 '取消菜单栏'
  12. ie.addressbar=0 '取消地址栏'
  13. ie.toolbar=0 '取消工具栏'
  14. ie.statusbar=0 '取消状态栏'
  15. ie.width=450 '宽'
  16. ie.height=435 '高'
  17. ie.resizable=0 '不允许用户改变窗口大小'
  18. ie.navigate "about:blank" '打开空白页面'
  19. 'ie.left=fix(ie.document.parentwindow.screen.availwidth-ie.width/2) '水平居中'
  20. ie.top=10
  21. ie.visible=0
  22. ie.visible=0 '窗口不可见'
  23. with ie.document '以下调用document.write方法,'
  24.     .write "<html><head><title>简易自定义关机程序</title></head><body bgcolor=#dddddd scroll=no>"
  25.     .write "<br><font size=5><center><font face=黑体>九洲系统优化系列 </font></center><br></font>"
  26.     .write string(6," ") & "功能建议和信息反馈请点击:<a href=http://bbs.dp168.com/thread-88488-1-1.html target=_blank>东坡论坛"
  27.     .write "</a></font></p><br>  请输入多久后关机:"
  28.     .write "<input id=time_in type=text size=5 name=time_in onkeydown="& chr(34) & "if(event.keyCode==13) document.all.confirm.focus();" & chr(34) & ">"
  29.     .write " 还剩下:<label id=time_echo type=text size=5 name=time_echo>"
  30.     .write "</label><br><br><p align=right><label id=time_demo type=text size=5 name=time_demo> </label>"
  31.     .write "<input id=cancel type=button value=退出> <input id=confirm type=button value=确定 onclick=confirm>"
  32.     .write "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p>"
  33.     .write "<object classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=417 height=156 "
  34.     .write "codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab>"
  35.     .write "<param name=movie value=http://dp168.com/ad/clock.swf>"
  36.     .write "<param name=quality value=high><param name=bgcolor value=#869ca7>"
  37.     .write "<param name=allowScriptAccess value=always><embed src="
  38.     .write "http://dp168.com/ad/clock.swf quality=high "
  39.     .write "name=Timer align=middle  width=417 height=156 play=true loop=false allowScriptAccess=always "
  40.     .write "type=application/x-shockwave-flash pluginspage=http://www.macromedia.com/go/getflashplayer>"
  41.     .write "</embed></object></font></body></html><!-- document.all.time_in.focus(); --> "
  42. end with
  43. dim wmi '显式定义一个全局变量'
  44. set wnd=ie.document.parentwindow '设置wnd为窗口对象'
  45. set id=ie.document.all '设置id为document中全部对象的集合'
  46. id.confirm.onclick=getref("confirm") '设置点击"确定"按钮时的处理函数'
  47. id.cancel.onclick=getref("cancel") '设置点击"取消"按钮时的处理函数'
  48. tmp_mi=0
  49. tmp=0
  50. tmp_sec=0
  51. wscript.sleep 200
  52. ie.visible=1 '窗口可见'
  53. 'ie.document.username.focus()  
  54. 'ie.document.getElementById("username").focus()  
  55. do while true '由于ie对象支持事件,所以相应的,'
  56.   wscript.sleep 1000 '脚本以无限循环来等待各种事件。'
  57.   'msgbox  "H" & IE.document.GetElementById("time_echo").innerHTML & "H"
  58.   if tmp_mi>=0 and tmp_sec>0 then
  59.       tmp_sec=tmp_sec-1
  60.       if tmp_sec<1 then
  61.           tmp_sec=60
  62.           tmp_mi=tmp_mi-1
  63.       end if
  64.       tmp_h=int(tmp_mi/60):if tmp_h>0 then tmp_h=tmp_h & "小时" & tmp_mi-tmp_h*60 else tmp_h=tmp_mi
  65.       if tmp_mi>-1 then IE.document.GetElementById("time_echo").innerHTML=tmp_h & ":" & tmp_sec
  66.   end if
  67.   if tmp_mi<0 and tmp_sec=60 then Shutdown()
  68. loop
  69. sub event_onquit 'ie退出事件处理过程'
  70.   wscript.quit '当ie退出时,脚本也退出'
  71. end sub
  72. sub cancel '"取消"事件处理过程'
  73.   ie.quit '调用ie的quit方法,关闭IE窗口'
  74. end sub '随后会触发event_onquit,于是脚本也退出了'
  75. sub confirm '"确定"事件处理过程,这是关键'
  76.   with id
  77.       tmp=.time_in.value
  78.       if tmp>"" then tmp=Num(tmp)
  79.       if instr(tmp,":") then tmp_left=left(tmp,instr(tmp,":")-1):tmp_right=right(tmp,len(tmp)-instr(tmp,":")):tmp=tmp_left*60+tmp_right
  80.       if isnumeric(tmp) then if tmp<1 then tmp=""
  81.       if isnumeric(tmp)=false then  tmp=""   
  82.       if tmp="" then
  83.           IE.document.GetElementById("time_demo").innerHTML= "<font color=red>请输入正确的分钟数!</font>"
  84.           tmp=0
  85.           .time_in.value="" '空值则默认
  86.       else
  87.           tmp_mi=tmp-1:tmp_sec=60
  88.           IE.document.GetElementById("time_demo").innerHTML= ""
  89.       end if
  90.   end with
  91. end sub
  92. '===========================================================================================
  93. Function Shutdown() '关机
  94.     Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}").ExecQuery("Select * from Win32_OperatingSystem")
  95.     For Each objOperatingSystem in colOperatingSystems
  96.         ObjOperatingSystem.Win32Shutdown(8)
  97.     Next
  98. End Function
  99. Function Num(i) '转换中文
  100.     k=""
  101.     for j=1 to len(i)
  102.         l=mid(i,j,1)
  103.         if l="1" then l="1"
  104.         if l="2" then l="2"
  105.         if l="3" then l="3"
  106.         if l="4" then l="4"
  107.         if l="5" then l="5"
  108.         if l="6" then l="6"
  109.         if l="7" then l="7"
  110.         if l="8" then l="8"
  111.         if l="9" then l="9"
  112.         if l="0" then l="0"
  113.         if l=":" then l=":"
  114.         k=k & l
  115.     next
  116.     Num=k
  117. End Function
复制代码





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