Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 08.04.2011, 17:27
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

http://habrahabr.ru/blogs/windows/117083/

Не совсем шутдаун, а ребут. Но если доработать напильником...
Ответить с цитированием
  #17  
Старый 10.04.2011, 10:32
einstein einstein вне форума
Начинающий
 
Регистрация: 02.09.2010
Адрес: Город
Сообщения: 143
Репутация: -4653
По умолчанию

а как это в SuperFast Shutdown сделано?
Ответить с цитированием
  #18  
Старый 15.04.2011, 00:06
Аватар для FlyAway
FlyAway FlyAway вне форума
Прохожий
 
Регистрация: 18.02.2011
Адрес: Украина , г. Одесса
Сообщения: 19
Версия Delphi: 7
Репутация: 12
По умолчанию

Не сочтите за оффтоп , но могу ли я поинтересоваться , зачем всё сие действо ?
__________________
Ответить с цитированием
  #19  
Старый 15.04.2011, 09:44
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
const
  ShutdownNoReboot = 0;
  ShutdownReboot = 1;
  ShutdownPowerOff = 2;

function NtShutdownSystem(SHUTDOWN_ACTION: DWORD): DWORD; stdcall; external 'ntdll.dll';

function EnableShutdownPrivledges: Boolean;
var
  hCurrentProcess: THandle;
  hTokenHandle: THandle;
  tp: _TOKEN_PRIVILEGES;
  PreviousState: _TOKEN_PRIVILEGES;
  ReturnLength: Cardinal;
begin
  hCurrentProcess:=GetCurrentProcess;
  if OpenProcessToken(hCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hTokenHandle) then
  begin
    if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid) then
    begin
      tp.PrivilegeCount:=1;
      tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
      if AdjustTokenPrivileges(hTokenHandle, False, tp, SizeOf(_TOKEN_PRIVILEGES), PreviousState, ReturnLength) then
        Result:=True
      else
        Result:=False;
    end else Result:=False;
  end else Result:=False;
end;

использование:
Код:
  EnableShutdownPrivledges;
  NtShutdownSystem(ShutdownReboot);
Код:
  EnableShutdownPrivledges;
  NtShutdownSystem(ShutdownPowerOff);
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter