我有一個正在運行的應用程序,並且用戶已經給出了關閉系統的命令,但是我想推遲關閉,直到我的應用程序正在運行。完成應用程序的工作後,系統應該關閉。如何通過控制檯應用程序在Windows中延遲系統關機?
回答
當Windows正在關閉時發送WM_QUERYENDSESSION和應用程序sendback TRUE或FALSE取決於當前狀態。 關於這個消息,我發現它: http://msdn.microsoft.com/en-us/library/ms700677(v=vs.85).aspx
也許它可以幫助你
這對於Windows應用程序很有用,但不適用於控制檯應用程序。 – 2012-04-27 16:27:20
沒有什麼能夠阻止控制檯應用程序爲此目的在另一個線程上創建隱藏窗口。 – ChrisV 2012-04-27 17:15:19
這取決於你在談論的Windows版本。在Windows XP中,有類似WM_QUERYENDSESSION的消息可以響應以阻止關閉。 (由於您是一個控制檯應用程序,您可能需要在控制檯應用程序仍在運行時產生一個小窗口應用程序來執行此操作。)
但Vista讓應用程序難以阻止關機。 (微軟聲稱根本無法做到這一點,但我確實已經看到Visual Studio 2010能夠做到這一點)。您可以將關機延遲約五秒鐘(但請記住,可能有許多其他應用程序試圖做一堆在相同的五秒鐘內)。此時,用戶將獲得一個UI,顯示所有未正確關閉的應用程序。使用Vista +,您可以撥打ShutdownBlockReasonCreate
讓用戶知道爲什麼打斷您的應用程序是一個壞主意,但這並不會阻止用戶這樣做。
下面是MSDN入門點,瞭解如何應對shutdown。
- 1. 如何在Windows關機時關閉控制檯應用程序
- 2. 在Windows操作系統中隱藏C程序的控制檯
- 3. 控制檯應用程序通過Windows服務的好處
- 4. 通過Python與Windows控制檯應用程序交互
- 5. 如何在控制檯應用程序中執行WCF主機?
- 6. 如何在關閉Windows控制檯時正常關閉Java應用程序?
- 7. 在Windows服務主機控制檯應用程序
- 8. 如何在控制檯應用程序
- 9. 如何從Windows窗體應用程序在C#中關閉控制檯窗口?
- 10. C#控制檯和Windows應用程序
- 11. 在VS2015中通過控制檯運行.NET Core應用程序
- 12. C#延遲 - 延遲輸出到控制檯,而程序繼續執行
- 13. 如何在Symbian控制檯應用程序中接收關機事件?
- 14. Visual Studio在控制檯應用程序上開始不調試時延遲
- 15. 通過PowerShell/cmd爲Linux應用程序調用Windows子系統
- 16. Windows控制檯應用程序 - 用於關閉事件信號
- 17. 如何使單個系統(機器)的Windows應用程序
- 18. 從控制檯應用程序通過通用列表從asp.net
- 19. 系統托盤應用程序來控制Windows服務
- 20. 從控制檯應用程序引用PCL的依賴關係
- 21. 如何過濾系統應用程序?
- 22. 如何測量低延遲C++應用程序的延遲
- 23. 從控制檯應用程序切換到Windows應用程序
- 24. 從Windows XAML應用程序運行控制檯應用程序
- 25. 將控制檯應用程序轉換爲Windows應用程序
- 26. 控制檯應用程序。 VS Windows應用程序
- 27. 手機應用程序的最佳版本控制系統?
- 28. 如何終止未關聯進程的Windows控制檯應用程序?
- 29. 如何從安裝在linux上的ruby在windows操作系統上執行控制檯應用程序?
- 30. 在Windows窗體中嵌入控制檯應用程序並用作過程?
所以你想在不修改應用程序代碼的情況下完成這項工作? – mihai 2012-04-27 11:37:34
使用SetConsoleCtrlHandler在關機時獲取回調。延遲關機的選項非常有限,您必須快速。 – 2012-04-27 12:48:01
不,我想只在我的應用程序中添加此代碼,,,, – shilpisingh 2012-04-30 05:42:59