СообЧа > База Знаний > Программирование > Win32 API

Вопрос

Как можно заставить компьютер перезагрузиться или выключится?

Ответ

Выключить — ExitWindowsEx(EWX_SHUTDOWN,1);
Перезагрузить — ExitWindowsEx(EWX_REBOOT,1);

Shadow

Первый вариант — только для win9x.
На Delphi это будет выглядеть так:

procedure ShutDownSystem;
var
Handle,Ph: THandle;
pid : DWORD;
luid : TLargeInteger;
priv : TOKEN_PRIVILEGES;
ver : TOSVersionInfo;
begin
ver.dwOSVersionInfoSize:=Sizeof(ver);
GetVersionEx(ver);
if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then begin
pid:=GetCurrentProcessId;
ph := OpenProcess(PROCESS_ALL_ACCESS,false,pid);
if OpenProcessToken(ph,TOKEN_ADJUST_PRIVILEGES,handle) then
if LookupPrivilegeValue(nil,'SeShutdownPrivilege',luid) then begin
priv.PrivilegeCount:=1;
priv.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
priv.Privileges[0].Luid:=luid;
AdjustTokenPrivileges(handle,false,priv,0,nil,pid);
end;
end;
ExitWindowsEx(EWX_POWEROFF+EWX_FORCE ,0);
end;



Copyright © 2000-2004 Сообщество Чайников
Контактная информация