2009-08-06 48 views

Trả lời

6

Không có chức năng Win32 thực tế nào để kiểm tra.

Thay vào đó, Windows sẽ gửi thông báo WM_QUERYENDSESSION tới mọi ứng dụng khi khởi động tắt máy.

Bạn có thể trả lời tin nhắn đó và ví dụ như hủy tắt máy. (Mặc dù bạn không nên làm điều đó trừ khi nó là hoàn toàn cần thiết)

Trước khi tắt máy thực sự, thông báo WM_ENDSESSION được gửi đi.

Bạn chỉ nên thực hiện bất kỳ việc dọn dẹp nào sau thông báo này, vì không đảm bảo rằng hệ thống thực sự tắt sau WM_QUERYENDSESSION.

CHỈNH SỬA: Nếu bạn muốn nghe những tin nhắn này từ Dịch vụ, bạn phải thực hiện thêm một số thao tác.

Dịch vụ thường không có cửa sổ, vì vậy bạn không thể chỉ cần móc vào hàng đợi thông báo cửa sổ hiện có. Thay vào đó, bạn phải tạo một cửa sổ giả, có nghĩa là chỉ xử lý các thông báo và sử dụng nó để xử lý các thông báo ở trên.

Xem tài liệu MSDN để biết thêm thông tin về message-only windows.

+0

Làm cách nào để kiểm tra xem bên trong dịch vụ cửa sổ (COM)? – devnull

+1

Bạn phải tạo một cửa sổ giả cho điều đó và kiểm tra các thư này trong WindowProc của nó. –

+1

Cảm ơn rất nhiều vì lời giải thích tuyệt vời! – devnull

Các vấn đề liên quan