【问题标题】:Hide Windows message when reboot system via batch通过批处理重新启动系统时隐藏 Windows 消息
【发布时间】:2016-12-07 11:59:28
【问题描述】:

我的 C# 应用程序中有一个重启按钮。
这是我的代码 sn-p:
System.Diagnostics.Process.Start("shutdown.exe", "-r -t 15");

我的问题是我收到了默认的 Windows 消息:

我知道我可以通过-c "some string"更改消息内容,
我怎样才能完全删除它? (我有我自己的信息要显示)

谢谢!

【问题讨论】:

标签: c# windows shutdown


【解决方案1】:

你可以试试:

System.Diagnostics.Process.Start("shutdown.exe", "-r -t 15 -f");

-f 强制关闭正在运行的应用程序而不预先警告用户。为 -t 参数指定大于 0 的值时,隐含 -f 参数。

【讨论】:

  • 感谢您的回答,但没有帮助。我仍然收到相同的消息框
  • 你可以试试System.Threading.Thread.Sleep(15000); System.Diagnostics.Process.Start("shutdown.exe", "-r -t 0 -f");这有帮助吗?
【解决方案2】:

感谢@nick_gabpe,我设法绕过了这个问题。
不确定这是否是最简洁的答案,但它有效..

我有一个带有“立即重新启动”按钮的 MessageBox,然后我使用 BackgroundWorker 来解决我的问题:

public static void RebootMachine()
    {

        BackgroundWorker worker = new BackgroundWorker();            
        worker.DoWork += (o, ea) =>
        {
            System.Threading.Thread.Sleep(15000);
        };
        worker.RunWorkerCompleted += (o, ea) =>
        {                
            System.Diagnostics.Process.Start("shutdown.exe", "-f -r -t 0");
        };            

        worker.RunWorkerAsync();

        DialogResult result = MsgBox.Show("The device will be initialized in 15 seconds",
            "Restarting device", MsgBox.Buttons.RestartNow, MsgBox.Icon.Info, MsgBox.AnimateStyle.FadeIn);

        if (result == DialogResult.Yes)
        {
            System.Diagnostics.Process.Start("shutdown.exe", "-f -r -t 0");    
        }

    }

【讨论】:

  • 只想在后台使用另一个线程,这样我的 UI 仍然可以工作,这是我想到的第一件事。你有更好的方法吗?
  • 代码是否实际上 执行Thread.Sleep,或者这只是您在其中进行实际工作的代码演示?我不清楚为什么您在强制立即关闭时关心您的 UI 保持响应。
  • 当我单击 UI 上的重新启动按钮时,我收到一条消息,提示窗口将在 15 秒内初始化。在同一个消息框中,我有一个现在重新启动按钮 - 嗯,现在重新启动窗口..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多