2014-09-02 26 views
3

我發現在網上,我可以安排窗口關閉這樣做:C#取消Windows關機編程

private void button1_Click(object sender, EventArgs e) 
{ 
    // Shutdown 
    Process.Start("shutdown", "/s /t 10"); 

} 
private void button2_Click(object sender, EventArgs e) 
{ 
    // Cancel Shutdown 
    Process.Start("shutdown /a"); 
} 

所以我綁一個按鈕,甚至調用以上。有沒有辦法讓我綁定另一個按鈕的命令,將取消這種關機?

我有搜索和避風港;噸發現任何有用的事情,我已經找到了一些東西,如

Process.Start("cmd.exe", "shutdown /a"); 
or 
Process.Start("shutdown /a"); 

但無論是那些似乎工作。

調用Process.Start(「shutdown/a」);結果在

類型 'System.ComponentModel.Win32Exception' 的未處理的異常發生在System.dll中

+3

就可以顯示該按鈕事件的代碼?也許你需要做的地方,你可以檢查'CanCancel',但不能基於你提供的代碼的一點點 – MethodMan 2014-09-02 14:52:57

+0

正確做到這一點,查找WM_QUERYENDSESSION(http://hintdesk.com/c-catch-關閉事件-的計算機/)。還有SessionEnding事件http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.sessionending%28v=vs.110%29.aspx – hatchet 2014-09-02 15:01:18

+0

如果您包含Message和可能是StackTrace的異常。 – 2014-09-02 15:02:37

回答

0

的Process.Start( 「關斷」, 「/ A」);當關機已使用

的Process.Start調度

將工作( 「關斷」, 「/ S/T 60」);

但它不會取消已經啓動的關機(即60秒過去)。

這僅僅是使用內置的命令在Windows中: http://technet.microsoft.com/en-gb/library/bb491003.aspx

+0

我相信這是行得通的 – user3916570 2014-09-02 15:02:13