2009-06-06 16 views
5

Czy istnieje dowolny interfejs Win32 API, aby przełączyć komputer w tryb hibernacji lub zawieszenia?Czy istnieje interfejs Win32 API, który uruchamia tryb hibernacji lub zawieszenia w systemie Windows?

Przeczytałem MSDN i dowiedziałem się, że wiadomość WM_POWERBROADCAST zostanie nadana, gdy wystąpią zdarzenia zarządzania energią. Pomyślałem o symulowaniu tego samego z PostMessage(WM_POWERBROADCAST). Czy jest to właściwy sposób działania lub czy istnieje dowolny API Win32, aby to osiągnąć?

Odpowiedz

11

Zapoznaj się z SetSuspendState.

Pamiętaj, że potrzebujesz uprawnienia SE_SHUTDOWN_NAME, jak wspomniano na przywołanej stronie msdn.

+0

Pokonaj mnie! Poprawiłem link w Twoim poście. Mam nadzieję, że nie masz nic przeciwko. –

1

Jak pisał Ben Schwehn, SetSuspendState jest drogą do zrobienia. W win95, powinieneś zadzwonić do SetSystemPowerState. Możesz również wywołać funkcję IsPwrSuspendAllowed i IsPwrHibernateAllowed lub GetPwrCapabilities, aby określić, czy urządzenie obsługuje funkcję wstrzymania/hibernacji.

0

W aplikacji Windows Form należy użyć metody SetSUspendState (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.application.setsuspendstate.aspx). Pierwszy parametr pozwala wybrać pomiędzy SUspend i Hibernate.

Dla aplikacji formularzy bez systemu Windows wywołaj bezpośrednio interfejs Win32 API: funkcja SetSuspendState znajduje się w pliku powrprof.dll.