Windows VBSript关闭消息混乱

Windows VBSript关闭消息混乱,windows,vba,vbscript,Windows,Vba,Vbscript,我目前正在学习如何用Visual Basic编写命令,并决定制作一个简单的关机消息。代码工作得很好:当用户单击“是”时,它将关闭,“否”,“取消”和“X”按钮关闭消息。 然而,我决定尝试一个恶作剧的消息,也就是说,计算机将关闭任何选择。我运行了脚本,但是当我单击“X”图标时(我没有想到要关闭我的计算机!),我的计算机还是关闭了:( 有没有办法阻止这种情况发生,或者更好的办法是,有没有办法灰显“X”图标,以便用户无法关闭消息? 代码如下: Option Explicit Dim result re

我目前正在学习如何用Visual Basic编写命令,并决定制作一个简单的关机消息。代码工作得很好:当用户单击“是”时,它将关闭,“否”,“取消”和“X”按钮关闭消息。 然而,我决定尝试一个恶作剧的消息,也就是说,计算机将关闭任何选择。我运行了脚本,但是当我单击“X”图标时(我没有想到要关闭我的计算机!),我的计算机还是关闭了:( 有没有办法阻止这种情况发生,或者更好的办法是,有没有办法灰显“X”图标,以便用户无法关闭消息? 代码如下:

Option Explicit
Dim result
result = MsgBox ("Do you want to shutdown?", 3+48,"Warning")
Dim objShell
Select Case result
    Case vbYes
        MsgBox("shuting down ...")
        Set objShell = WScript.CreateObject("WScript.Shell")
        objShell.Run "C:\WINDOWS\system32\shutdown.exe -r -t 20"
    Case vbNo
        MsgBox("shuting down ...")
        Set objShell = WScript.CreateObject("WScript.Shell")
        objShell.Run "C:\WINDOWS\system32\shutdown.exe -r -t 20"
    Case vbCancel
        MsgBox("shuting down ...")
        Set objShell = WScript.CreateObject("WScript.Shell")
        objShell.Run "C:\WINDOWS\system32\shutdown.exe -r -t 20"
End Select

提前干杯!:D

好的,有没有理由尝试删除/禁用X?我问,因为虽然可以做到,但这会有点困难

  • 并非msgbox上的所有按钮组合都可以启用X。请尝试vbAbortRetryIgnore,也可以尝试vbYesNo
  • 如果提供了“取消”按钮(除vbOkOnly之外的所有其他组合),则启用X
  • 如果仅显示一个按钮,则启用X
  • 这使得一旦你意识到这些事情,禁用按钮几乎毫无意义

  • N/A.X按钮未启用
  • MsgBox返回vbCancel
  • MsgBox只返回按钮的值 顺便说一下,这不仅仅是单击X。启用X后,ESC将触发相同的结果

  • -r:用于重新启动

    -s:用于关机

    此Vbscript可以在桌面上创建一个快捷方式,询问您是否要关闭计算机

    Option Explicit
    Dim MyScriptPath 
    MyScriptPath = WScript.ScriptFullName
    Call Shortcut(MyScriptPath,"Shutdown the computer")
    Call AskQuestion()
    '**********************************************************************************************
    Sub Shortcut(PathApplication,Name)
        Dim objShell,DesktopPath,objShortCut,MyTab
        Set objShell = CreateObject("WScript.Shell")
        MyTab = Split(PathApplication,"\")
        If Name = "" Then
            Name = MyTab(UBound(MyTab))
        End if
        DesktopPath = objShell.SpecialFolders("Desktop")
        Set objShortCut = objShell.CreateShortcut(DesktopPath & "\" & Name & ".lnk")
        objShortCut.TargetPath = Dblquote(PathApplication)
        ObjShortCut.IconLocation = "%SystemRoot%\system32\SHELL32.dll,-28"
        objShortCut.Save
    End Sub
    '**********************************************************************************************
    Sub AskQuestion()
        Dim Question,Msg,Title
        Title = "Shutdown the computer"
        Msg = "Are you sure to shutdown the computer now ?"& Vbcr &_
        "If yes, then click [YES] button "& Vbcr &_
        "If not, then click [NO] button"
        Question = MsgBox (Msg,VbYesNo+VbQuestion,Title)
        If Question = VbYes then
            Call Run_Shutdown(30)
        else
            WScript.Quit()
        End if
    End Sub
    '**********************************************************************************************
    Function DblQuote(Str)
        DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '**********************************************************************************************
    Sub Run_Shutdown(N)
        Dim ws,Command,Execution
        Set ws = CreateObject("wscript.Shell")
        Command = "Cmd /c Shutdown -s -t "& N &" -c "& DblQuote("Save your work because your PC will shut down in "& N &" seconds")
        Execution = ws.run(Command,0,True)
    End sub
    '**********************************************************************************************
    

    感谢您的回复!问题现已解决:)