![]()  | 
![]() ![]() ![]() ![]()  | 
   
 | 
Power off (не убивает процессы)Delphi , ОС и Железо , Компьютер
Автор: DeMoN-777 
{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Зависимости: Windows
Автор:       DeMoN-777, DeMoN-777@yandex.ru, Санкт-Петербург
Copyright:   @
Дата:        21 июня 2002 г.
***************************************************** }
procedure ExitWinNT(AShutdown: Boolean);
var
  hToken: THandle;
  tkp: TTokenPrivileges;
  ReturnLength, What: Cardinal;
begin
  if AShutdown then
    What := EWX_SHUTDOWN or EWX_POWEROFF
  else
    What := EWX_REBOOT;
  if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY, hToken) then
  begin
    LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
    tkp.PrivilegeCount := 1;
    tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
      ExitWindowsEx(What, 0)
  end
end;
Пример использования: ExitWinNT(True); Это код-snippet на Delphi, который позволяет отключить или перезапустить Windows-систему без прерывания процессов. Он использует функцию  Процедура  Распределение кода: 
 Код также включает в себя пример использования:  Обратите внимание, что этот код требует административных привилегий для успешного выполнения. Кроме того, важно быть осторожным при использовании этого кода, так как отключение или перезапуск системы может иметь неожиданные последствия. В статье описывается процедура ExitWinNT для остановки компьютера на Windows, которая не убивает процессы и позволяет выбрать тип завершения (shutdown, power off или рестарт). Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш  
  | 
||||
 ©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007  | ||||