C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Выключение ПК!
** Vadim
Отправлено: 12.02.2004, 11:05


Не зарегистрирован







Хотелось бы посмотреть на код выключенея компьютера (ОС XP)...
где -то год тому назад на этом сайте в FAQ это было...сейчас нету!smile.gif

Gedeon
Отправлено: 12.02.2004, 11:35


Ветеран

Группа: Модератор
Сообщений: 1742



CODE

HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
  ShowMessage("OpenProcessToken");
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
  &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
  (PTOKEN_PRIVILEGES)NULL, 0);
// Cannot test the return value of AdjustTokenPrivileges.
if (GetLastError() != ERROR_SUCCESS)
  ShowMessage("AdjustTokenPrivileges");
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE , 0))
  ShowMessage("ExitWindowsEx");
Vadim
Отправлено: 13.02.2004, 04:29


Ученик-кочегар

Группа: Участник
Сообщений: 15



Спасибо, что не затруднило вставить этот код
Vadim
Отправлено: 13.02.2004, 06:35


Ученик-кочегар

Группа: Участник
Сообщений: 15



Минуточку...!
Есть еще один вопрос на эту тему.
Как задействовать автоматическое управление электропитанием...т.е. выключать ПК, чтобы не приходилось нажимать на кнопку Power!
Guest
Отправлено: 13.02.2004, 11:31


Не зарегистрирован







так а этот код разве не выключает, крпус ATX?
Vadim
Отправлено: 14.02.2004, 04:10


Ученик-кочегар

Группа: Участник
Сообщений: 15



Если выключать средствами Windows, то машнина гаснет полностью...а если при помощи этого кода появляется табличка "Питание компьютера можно отключить" ОСь ХР.
Что думаете?
Admin
Отправлено: 15.02.2004, 10:40


Владимир

Группа: Администратор
Сообщений: 1190



Попробуйте EWX_SHUTDOWN|EWX_POWEROFF:

ExitWindowsEx (EWX_SHUTDOWN|EWX_POWEROFF , NULL);
Vadim
Отправлено: 16.02.2004, 05:40


Ученик-кочегар

Группа: Участник
Сообщений: 15



да, спасибо!
Последний совет помог, все работает как надо.
Думаю этот момент нужно разместить в разделе FAQ. biggrin.gif

Вернуться в Вопросы программирования в C++Builder