2011-09-24 13 views
15

VMWare Workstation robi coś całkiem fajne, gdy próbuję zamykania systemu Windows, podczas gdy maszyna wirtualna jest uruchomiona:zamknięcie Prevent Okna z niestandardowego komunikatu

VMWare prevents Windows shutdown with a custom message

Normalnie, to widzimy „Ten program jest zapobieganie systemu Windows od wyłączenia "wiadomość zamiast nowej" 1 maszyna wirtualna jest w użyciu ".

W jaki sposób VMWare to robi? Nie udało mi się znaleźć w Google żadnych interfejsów API.

+0

Wiem, że przy użyciu polecenia shutdown w linii poleceń można określić niestandardowe komunikaty o wyłączeniu do wyświetlenia, może to jest powiązane? – stijn

Odpowiedz

11

Możesz przeczytać o zmianach wprowadzonych w Vista here. Naprawdę powinieneś bardzo uważnie przeczytać ten artykuł.

Interfejsy API, których szukasz, to: ShutdownBlockReasonCreate, ShutdownBlockReasonDestroy i ShutdownBlockReasonQuery. Pamiętaj, że te interfejsy API są dostępne tylko na serwerze Vista/2008. Będziesz musiał zaimplementować funkcję wycofania w 2000/XP.

Jeśli musisz zablokować zamknięcie, zadzwoń pod numer ShutdownBlockReasonCreate, przekazując uchwyt do głównego okna i powód jako ciąg znaków. Ten ciąg znaków jest wyświetlany w zablokowanym oknie dialogowym zamknięcia, tj. "1 maszyna wirtualna jest używana" na zrzucie ekranu.

Jeśli zakończy się operacja blokująca zamykanie, zadzwoń pod numer ShutdownBlockReasonDestroy.

Pamiętaj, że musisz nadal implementować WM_QUERYENDSESSION, aby wszystkie elementy pasowały do ​​siebie. Jest to część, która faktycznie blokuje zamknięcie.

Na XP powinieneś także odpowiedzieć na WM_ENDSESSION, a jeśli Twoja aplikacja blokowała wyłączanie, uprzejmie jest wyświetlać komunikat z informacją, dlaczego. Jeśli tego nie zrobisz, użytkownik pozostawi drapanie w głowie, dlaczego komputer ignoruje instrukcję wyłączenia.

+1

[Nie zapomnij odpowiedzieć na WM_QUERYENDSESSION.] (Http://msdn.microsoft.com/en-us/library/ms700677 (v = vs.85) .aspx) – bzlm

+0

Ahh, dziękuję! Znalazłem je w Google, ale dokumentacja nie robi zbyt wiele, aby zauważyć, że wpływa na interfejs użytkownika, więc pomyślałem, że komunikat zostanie wyświetlony, na przykład za pomocą okna komunikatu. – foxy

+1

Kluczem jest dyskursywny artykuł, do którego dołączyłem w pierwszym zdaniu odpowiedzi. To jest twój przewodnik dotyczący obsługi wyłączania. Dokumentacja API jest zawsze nieco bardziej zwięzła. –

Powiązane problemy