C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Как программно выключить компьютер / Система (OC) / Borland C++

Как программно выключить компьютер?

Автор: OlegGG
Исходная ссылка: - - -

Готовая функция:
bool shoot(bool reboot, bool force)
{
OSVERSIONINFO ver;
ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&ver);
if (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) // в семействе NT для выключения необходимо иметь привилегию SE_SHUTDOWN_NAME
        {
        HANDLE hToken;
        TOKEN_PRIVILEGES* NewState;
        OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken);
        NewState=(TOKEN_PRIVILEGES*)malloc(sizeof(TOKEN_PRIVILEGES) + sizeof (LUID_AND_ATTRIBUTES));
        NewState->PrivilegeCount = 1;
        LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&NewState->Privileges[0].Luid);
        NewState->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        AdjustTokenPrivileges(hToken, FALSE, NewState, NULL, NULL,NULL);
        free(NewState);
        CloseHandle(hToken);
        }

UINT mode = 0;
if (reboot)
        mode += EWX_REBOOT;
else
        mode += EWX_POWEROFF;

if (force) mode += EWX_FORCE;

return ExitWindowsEx(mode ,0);
}
Использование:
shoot(false, true); // в "быстром" режиме закроет все программы и выключит компьютер