Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > remote shutdown


Автор: threef 4.10.2006, 19:18
пользую InitiateSystemShutdown. Винда рисует: Теперь можете выключить питание компа. Как упросить ее сделать это самой ? 
В топиках нету, там есть про перезагрузку. Это у меня работает. Если говорить о InitiateSystemShutdownEx, то там дополнительный параметр сообщает в лог о причине выключения. 
Может, кто подскажет короткий путь ? 

Автор: MffDen 6.10.2006, 00:34
Код
BOOL InitiateSystemShutdown(
  LPTSTR lpMachineName,
  LPTSTR lpMessage,
  DWORD dwTimeout,
  BOOL bForceAppsClosed,
  BOOL bRebootAfterShutdown
);

Здесь 
  • lpMachineName - имя компа на котором будет исполнятся функция (NULL - локальный комп)
  • lpMessage - сообщение, которое будет высвечиваться в диалоге о завершении работы
  • dwTimeout - время, в течении которого диалог будет отображаться на экране
  • bForceAppsClosed - определяет давать ли приложениям возможность сохранить свои данные и нормально завершиться (false), либо вырубать их не дожидаясь оного (true)
  • bRebootAfterShutdown - отправлять комп в перезагруз (true), либо выключать (false)
Соответственно чтобы завершить работу без выдачи предупреждений надо вызвать функцию со следующими параметрами:
   InitiateSystemShutdown(Name, "", 0, false, false)
Правда если какая-то прога при завершении перестанет отвечать на запросы, то будет выведен стандартный диалог типа "приложение не отвечает" с кнопкой завершить сейчас. Чтобы этого не было надо заменить предпоследний параметр функции на true:
   InitiateSystemShutdown(Name, "", 0, true, false)
Однако это может привести к потере данных, несохраненных приложением.

Автор: Fixin 6.10.2006, 07:56
2MffDen, threef говорит том, что компютер приходится выключать кнопкой, а не автоматикой. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)