是/否关闭

时间:2013-08-07 22:42:13

标签: vbscript

我正在玩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

3 个答案:

答案 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