На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Win Api / Как программно выключить компьютер (даже если к нему подключены другие пользователи или работает DOS-программа)? Сделать домашней страницей Добавить в избранное Написать писмо

Как программно выключить компьютер (даже если к нему подключены другие пользователи или работает DOS-программа)?


Проверено по Вин95 (M.Scheduler M_Scheduler@Yahoo.com)

if not ExitWindowsEx(EWX_Force or
                    EWX_PowerOff or
                    EWX_ShutDown, 0) then
 MessageBox(0, 'An application refused to terminate', 'Win32', MB_OK);


Комментарий от "Макса" (halyavshik@mailru.com)
небольшое дополнение как выключить компутер с NT корректно компилируется в Delphi5 в 4 какие-то проблемы с описанием констант привиллегий в других версиях Delphi не проверял:

program NTShutdown;
uses windows;
var
   hToken: THandle;
   tkp: TTokenPrivileges;
   ReturnLength: Cardinal;

begin
   if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then begin
       LookupPrivilegeValue(nil, 'SeShutdownPrivilege',
tkp.Privileges[0].Luid);

       tkp.PrivilegeCount:=1; // one privelege to set
       tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;

       if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength)
then
           ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
   end;
end.

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz