2016-12-07 61 views
0

我的c#应用程序中有一个重启按钮。
这是我的代码片段:
System.Diagnostics.Process.Start("shutdown.exe", "-r -t 15");通过批量重启系统时隐藏Windows消息

我的问题是,我得到一个默认的Windows消息: enter image description here

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

谢谢!

+0

用'的Windows API '在[相关文章]中描述的调用(http://stackoverflow.com/questions/102567/how-to-shut-down-the-computer-from-c-sharp)。 –

回答

0

你可以试试:

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

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

+0

感谢您的答案,但它没有帮助。我仍然收到相同的消息框 – nafarkash

+1

您可以尝试 'System.Threading.Thread.Sleep(15000); System.Diagnostics.Process.Start(“shutdown.exe”,“-r -t 0 -f”);' 这是否有帮助? –

0

感谢@nick_gabpe我设法绕过了这个问题。
不知道这是否是最巧妙的答案,但它的工作原理..

我有“立即重新启动”按钮,然后我用一个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");  
     } 

    } 
+0

这里的BackgroundWorker有什么意义? –

+0

只需要在背景上使用另一个线程,以便我的UI仍然可以工作,这是我头脑中首先想到的。你有更好的方法来做到这一点? – nafarkash

+0

代码*实际上是否执行Thread.Sleep,或者这只是您在那里做实际工作的代码的演示?我不清楚为什么当你强制立即关闭时,你关心你的UI保持响应。 –