簡體   English   中英

如何以編程方式確定Windows是否正在關閉?

[英]How to Programmatically Determine if Windows is Shutting Down?

我正在制作一個在隨機時間在我們的每台PC上運行的應用程序。 它工作正常,但如果PC當前正在關閉,那么我無法讀取WMI,我得到一些錯誤。 因此,我需要確定PC當前是否正在關閉,因此我可以避免這些錯誤。 有沒有人有想法?

謝謝!

使用索引SM_SHUTTINGDOWN0x2000 )調用GetSystemMetrics

創建一個隱藏的頂級窗口並偵聽WM_ENDSESSION消息。 wParam的值將告訴您整個系統是否正在關閉,或者用戶是否正在注銷。

如果您的應用程序是控制台應用程序,則使用SetConsoleCtrlHandler進行注冊以接收關閉通知。

任何檢測到這種情況的嘗試都會出現競爭情況:系統關閉可能會在您檢測到它沒有關閉之后立即啟動,但在您嘗試執行在關閉期間無法運行的操作之前。 因此,解決問題的方法是錯誤的。 相反,您只需要處理WMI讀取失敗並確定它們是否由系統關閉引起,並且在這種情況下中止操作或以任何其他有意義的方式繼續操作。

有可能使用一種同步關閉檢測機制,您可以在關閉之前實際鎖定/延遲關閉一小段時間,並在該時間間隔內進行處理。 如果是這樣,那也是一種沒有競爭條件的安全方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM