我正在玩VBScript,我想创建一个MsgBox,询问用户是否要关闭他们的计算机。
如果用户点击Yes
,他们应该首先看到一个MsgBox,然后他们的计算机开始关机。
我正在使用此代码,但它不起作用。
有什么问题?
result = MsgBox ("Shutdown?", vbYesNo, "Yes/No Exm")
Select Case result
Case vbYes
MsgBox("shuting down ...")
Option Explicit
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "C:\WINDOWS\system32\shutdown.exe -r -t 0"
Case vbNo
MsgBox("Ok")
End Select
答案 0 :(得分:4)
我修改了你的代码如下:
Option Explicit
Dim result
result = MsgBox ("Shutdown?", vbYesNo, "Yes/No Exm")
Select Case result
Case vbYes
MsgBox("shuting down ...")
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "C:\WINDOWS\system32\shutdown.exe -r -t 20"
Case vbNo
MsgBox("Ok")
End Select
主要问题是“明确选项”必须位于顶部,因此必须使用“dim”关键字声明“result”变量。当我通过命令行执行上面的代码时,上面的代码工作正常。
我还添加了20的超时,但您可以轻松地将其更改回原始值0。
答案 1 :(得分:3)
由于documented Option Explicit
必须出现在脚本中的任何其他语句之前。在脚本中的任何其他位置使用它应该引发指向带有Option Explicit
语句的行的“预期语句”错误。如果您没有收到该错误,则代码中的On Error Resume Next
未显示。
如果将Option Explicit
语句移到脚本的开头,但仍未发生关闭,则需要检查shutdown
命令的返回值:
rc = objShell.Run "C:\WINDOWS\system32\shutdown.exe -r -t 0", 0, True
If rc <> 0 Then MsgBox "shutdown failed with exit code " & rc & "."
只要您将一个参数传递给函数,MsgBox
语句中的括号不应该引起问题,但我仍然会删除它们。
答案 2 :(得分:2)
试试这个:
Set Shell = CreateObject("WScript.Shell")
Answer = MsgBox("Do You Want To" & vbNewLine & "Shut Down Your Computer?",vbYesNo,"Shutdown:")
If Answer = vbYes Then
Shell.run "shutdown.exe -s -t 60"
Ending = 1
ElseIf Answer = vbNo Then
Stopping = MsgBox("Do You Wish To Quit?",vbYesNo,"Quit:")
If Stopping = vbYes Then
WScript.Quit 0
End If
End If