Показать сообщение отдельно
  #1  
Старый 05.05.2008, 22:06
Чипырик Чипырик вне форума
Прохожий
 
Регистрация: 14.04.2008
Сообщения: 22
Репутация: 10
По умолчанию Выключение компа(битье процессов)

Здраствуйте. Как мне выеключить компьютер, чтобы он просто выключился и все (без всяческих вопросов и т.п.)
На сайте "http://www.delphisources.ru/pages/faq/base/power_off_kill.html" нашел такой код:

Код:
procedure Shutdown2;
var
  hToken: THandle;
  tkp: _TOKEN_PRIVILEGES;
  DUMMY: PTokenPrivileges;
  DummyRL: Cardinal;
begin
  DUMMY := nil;
  if not OpenProcessToken(
    GetCurrentProcess(),
    TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
    hToken
    ) then
    raise TShutdownEx.Create('OpenProcessToken failed');

  if (not LookupPrivilegeValue(nil, 'SeShutdownPrivilege',
    tkp.Privileges[0].Luid)) then
    raise TShutdownEx.Create('LookupPrivilegeValue failed');

  tkp.PrivilegeCount := 1;
  tkp.Privileges[0].Attributes := $0002; //SE_PRIVILEGE_ENABLED = $00002

  AdjustTokenPrivileges(hToken, FALSE, tkp, 0, Dummy, DummyRL);

  if (GetLastError() <> ERROR_SUCCESS) then
    raise TShutdownEx.Create('AdjustTokenPrivileges failed');

  if (not ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0)) then
    raise TShutdownEx.Create('ExitWindowsEx failed');
end;

Admin: Используем теги для оформления кода, иначе санкции!

Но Делфя ругается отчего-то на TShutdownEx. Грит не знаю таких букафф.
Ответить с цитированием