Bạn có thể đọc tất cả về các thay đổi được giới thiệu trong Vista here. Bạn thực sự nên đọc bài viết đó rất cẩn thận.
API bạn đang tìm kiếm là ShutdownBlockReasonCreate
, ShutdownBlockReasonDestroy
và ShutdownBlockReasonQuery
. Hãy nhớ rằng các API này chỉ có sẵn trên máy chủ Vista/2008. Bạn sẽ phải thực hiện hành vi thu gọn vào năm 2000/XP.
Nếu bạn cần chặn tắt máy, bạn gọi ShutdownBlockReasonCreate
truyền tay cầm đến cửa sổ chính của bạn và lý do làm chuỗi. Chuỗi này là những gì được hiển thị trong hộp thoại tắt máy bị chặn, tức là "1 máy ảo đang được sử dụng" trong ảnh chụp màn hình của bạn.
Nếu hoạt động chặn tắt hoàn tất thì bạn gọi ShutdownBlockReasonDestroy
.
Lưu ý rằng bạn vẫn phải triển khai WM_QUERYENDSESSION
để làm cho tất cả các phần khớp với nhau. Đây là phần thực sự chặn việc tắt máy.
Trên XP, bạn cũng phải trả lời WM_ENDSESSION
và nếu ứng dụng của bạn chặn tắt máy thì lịch sự là hiển thị thông báo cho biết lý do. Nếu bạn không làm như vậy thì người dùng còn lại gãi đầu của mình là tại sao máy tính bỏ qua lệnh tắt máy.
Nguồn
2011-09-24 09:05:41
Tôi biết khi sử dụng lệnh tắt trên dòng lệnh, người dùng có thể chỉ định thông báo tắt máy tùy chỉnh để hiển thị, có thể điều này có liên quan? – stijn