2011-09-24 32 views
15

VMWare Workstation làm điều gì đó khá mát mẻ khi tôi cố gắng tắt máy Windows trong khi một Virtual Machine đang chạy:Ngăn chặn Windows shutdown với thông điệp tùy chỉnh

VMWare prevents Windows shutdown with a custom message

Thông thường, chúng ta sẽ thấy một "Chương trình này được ngăn chặn Windows từ tắt "tin nhắn thay vì" 1 Máy ảo mới đang được sử dụng ".

VMWare làm như thế nào? Tôi đã không thể tìm thấy bất kỳ API nào về nó trên Google.

+0

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

Trả lời

11

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, ShutdownBlockReasonDestroyShutdownBlockReasonQuery. 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.

+1

[Đừng quên trả lời WM_QUERYENDSESSION.] (Http://msdn.microsoft.com/en-us/library/ms700677 (v = vs.85) .aspx) – bzlm

+0

Ahh, cảm ơn bạn! Tôi tìm thấy chúng thông qua Google, nhưng tài liệu không thực hiện rất nhiều theo cách lưu ý rằng nó ảnh hưởng đến giao diện người dùng, vì vậy tôi nghĩ rằng thông báo sẽ được hiển thị, ví dụ, bằng cách sử dụng một hộp thông báo. – foxy

+1

Điều quan trọng là bài viết đệ quy mà tôi liên kết trong câu đầu tiên của câu trả lời. Đó là hướng dẫn của bạn để xử lý tắt máy. Tài liệu API luôn là một chút ngắn gọn hơn. –

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