【问题标题】:Windows 7 shutdown with hidden message box带有隐藏消息框的 Windows 7 关机
【发布时间】:2014-11-12 09:33:48
【问题描述】:

Windows 7
简单的 .bat 和 .vbs 文件
级别:血腥初学者
摘要:在“shutdown.exe”调用期间抑制 Windows 关闭消息框

我正在尝试运行一个简单的系统关闭操作,该操作还清除了我的临时文件并提供了一个中止选项。到目前为止,我几乎达到了我的目标,使用一些简单的文件被一个接一个地调用。

清除临时数据

rmdir /s /q "C:\Users\myusername\AppData\Local\Temp"

执行关机

c:\windows\system32\shutdown -s -f -t 30

然后我正在创建一个消息框,允许我通过按 OK 按钮中止关机:

x=msgbox ("Temp files cleared. Executing system shutdown now!" & vbNewLine & "Press OK to abort shutdown.",262144+48+0, "System Shutdown")

If x=vbOk Then
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "abortShutdown.bat"
end if

(abortShutdown.bat 就是shutdown /a

系统正在正常关闭,并且中止也有效。问题是 Windows 7 向我显示了一个额外的消息框,上面写着“Windows 将在不到 1 分钟的时间内关闭”。

因此,我的屏幕上有 2 个消息框,但我只想从 .vbs 文件中查看我的自定义框。至少我设法将我的自定义框移到了前面......我还尝试了所谓的静默WshShell.RunSet WshShell = Nothing 解决方法,但没有成功。消息框仍然不断弹出。

我怎样才能完全抑制这个框?

【问题讨论】:

    标签: windows batch-file vbscript system-shutdown


    【解决方案1】:

    我会使用稍微不同的方法:

    timeout = 30 'seconds
    
    Set sh = CreateObject("WScript.Shell")
    
    x = sh.Popup("Temp files cleared. Shutting down in " & timeout & " seconds!" & _
          vbNewLine & "Press OK to shutdown immediately." & vbNewLine & _
          "Press Cancel to abort shutdown.", timeout, "System Shutdown", vbOKCancel)
    
    If x = vbCancel Then
      sh.Run "shutdown -a"
    Else
      sh.Run "shutdown -s -f -t 0"
    End If
    

    【讨论】:

    • 感谢您的帮助,这听起来不错。我假设这将在超时后调用关机。所以不会有盒子,因为它会立即关闭。运行您的代码时出现错误(800A000D 类型不匹配)。第 5 行字符 1 有问题。
    • @avigrail 抱歉,我弄乱了最后 2 个参数的顺序。固定。
    • 很好,这更容易,正是我想要的。再次感谢!
    • 注意:我在离线版本中将“vbOKCancel”替换为“1+256”,因此“取消”将是默认按钮,我只需按 Enter 即可中止。
    • @avigrail 我建议坚持使用命名常量 (vbOKCancel + vbDefaultButton2) 而不是使用数值,因为它使代码更易于理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多