Dim
RTime,
strTime,
NHour,
NMinute,
WSH,
bl
Set
WSH
=
CreateObject("WScript.Shell")
bl
=
MsgBox("要执行关机操作,还是重启操作?",
vbYesNo
+
vbSystemModal,
"关机重启")
If
bl
=
vbYes
Then
RTime
=
InputBox("请输入关机时间(格式
时:分
如22:12)",
"时间",
"23:20")
Else
RTime
=
InputBox("请输入重启时间(格式
时:分
如22:12)",
"时间",
"23:20")
End
If
strTime
=
Split(RTime,
":")
'以冒号(:)分割RTime中的内容,并以数组形式存入变量strTime
NHour
=
CInt(strTime(0))
'获取strTime中的第一位数据并转换为整型数据,本例为23
NMinute
=
CInt(strTime(1))
Do
While
True
If
(Hour(Now)
=
NHour)
And
(Minute(Now)
=
NMinute)
And
bl
=
vbYes
Then
WScript.Sleep
2000
'延迟2秒
WSH.SendKeys
"(^{esc})"
'模仿按下键盘上的CTRL+Esc键
WScript.Sleep
2000
WSH.SendKeys
"{RIGHT}"
'模仿按下键盘上的向右移方向键
WScript.Sleep
2000
WSH.SendKeys
"{ENTER}"
'模仿按下键盘上的Enter键
Set
WSH
=
Nothing
Exit
Do
ElseIf
(Hour(Now)
=
NHour)
And
(Minute(Now)
=
NMinute)
And
bl
=
vbNo
Then
WScript.Sleep
2000
'延迟2秒
WSH.SendKeys
"(^{esc})"
'模仿按下键盘上的CTRL+Esc键
WScript.Sleep
2000
WSH.SendKeys
"{RIGHT}"
'模仿按下键盘上的向右移方向键
WScript.Sleep
2000
WSH.SendKeys
"{RIGHT}"
WScript.Sleep
2000
WSH.SendKeys
"{UP}"
WScript.Sleep
2000
WSH.SendKeys
"{ENTER}"
'模仿按下键盘上的Enter键
Set
WSH
=
Nothing
Exit
Do
Else
WScript.Sleep
1000
End
If
Loop
说明:1、本程序的关机,重启,是利用模仿按下键盘键执行的,所以时间到时,如果还动鼠标时,有可能会执行不成功
2、如果能想出时间一到马上禁止使用鼠标,就很完美,100%成功
3、因为是模仿按键,不同系统的关机,重启,所在的位置可能不一样,所以有可能要根据自己的系统做相应的修改或添加模仿按键,向下键
{DOWN}
向左键
{LEFT}
向右键
{RIGHT}
向上键
{UP},即通过方向钱把光标移到关机或重启按钮上,然后确认
4、我的是WIN7系统,以上代码在我这里运行成功
5、dos或批处理应该也能,只是,要到的交互命令,兼容性不好,比如,Choice命令,在WIN
XP里运行很正常,在我的WIN7里运行却不行
6、DOS
下的有Shutdown命令,专门用来关机,重启的,但兼容还是不好,不是每个系统都能用它