Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с Win Api [D6, D7, WinXP]


Вадим_ВВ ©   (2005-05-17 15:35:00) 

Какие существуют функции WinApi для перезагрузки или выключения системы программно, кроме ExitWindows, она только выходит из системы и все. Если это единственная функция то какие надо вводить параметры?


noname:))   (2005-05-17 17:00:00) [1]

procedure shutdown;
var
 hToken, hProcess: THandle;
 tp, prev_tp: TTokenPrivileges;
 Len: DWORD;
 begin
   hProcess := OpenProcess(PROCESS_ALL_ACCESS, True, GetCurrentProcessID);
   try
     if not OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
       hToken) then Exit;
   finally
     CloseHandle(hProcess);
   end;
   try
     if not LookupPrivilegeValue('', 'SeShutdownPrivilege',
       tp.Privileges[0].Luid) then Exit;
     tp.PrivilegeCount := 1;
     tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
     if not AdjustTokenPrivileges(hToken, False, tp, SizeOf(prev_tp),
       prev_tp, Len) then Exit;
   finally
     CloseHandle(hToken);
   end;
ExitWindowsEx(EWX_SHUTDOWN, 0);
end;

В WinXP для выключения сначала надо получить привилегии.


DVM   (2005-05-17 16:28:00) [2]


> Вадим_ВВ   (17.05.05 15:35)  

http://delphibase.spb.ru/?action=viewtopic&topic=syscontrol


Игорь Шевченко   (2005-05-17 15:53:00) [3]

ZwShutdownSystem :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо