Вниз
Скачать: CL | DM;

WinAPI как програмно выключить питание компьютера?   Найти похожие ветки 

 
Столков Иван   (2005-04-19 07:11) [0]

Подскажите пожалуйста, как правильно используется програмная функция для отключения питания компьютера. Пробовал :
ExitWindowsEX (EWX_POWEROFF or EWX_FORCE,0);, но вместо выключения происходит простая перезагрузка windows.


 
VNavigator ©   (2005-04-19 09:22) [1]

Выдрано из KOL&MCK:

function WindowsShutdown( const Machine : String; Force, Reboot : Boolean ) : Boolean;
var
 hToken: THandle;
 tkp, tkp_prev: TTokenPrivileges;
 dwRetLen :DWORD;
 Flags: Integer;
begin
 Result := False;
 if Integer( GetVersion ) < 0 then // Windows95/98/Me
 begin
   if Machine <> "" then Exit;
   Flags := EWX_SHUTDOWN;
   if Reboot then
     Flags := Flags or EWX_REBOOT;
   if Force then
     Flags := Flags or EWX_FORCE;
   Result := ExitWindowsEx( Flags, 0 );
   Exit;
 end;

 OpenProcessToken(GetCurrentProcess(),
                  TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
                  hToken);

 if not LookupPrivilegeValue(PChar(Machine), "SeShutdownPrivilege",
                             tkp.Privileges[0].Luid) then Exit;
 tkp_prev:=tkp;
 tkp.PrivilegeCount:=1;
 tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
 AdjustTokenPrivileges(hToken, FALSE, tkp, sizeof(tkp), tkp_prev,
dwRetLen);

 if not LookupPrivilegeValue(PChar(Machine),
                             "SeRemoteShutdownPrivilege",
                             tkp.Privileges[0].Luid)
    then
        Exit;

 tkp.PrivilegeCount:=1;
 tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
 AdjustTokenPrivileges(hToken, FALSE, tkp, sizeof(tkp), tkp_prev,
dwRetLen);

 Result := InitiateSystemShutdown(PChar(Machine),nil, 0, Force, Reboot);
end;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.021 c
4-1113303401
Stalker01
2005-04-12 14:56
2005.06.06
Скрыть папку


1-1116929692
KillerToxa
2005-05-24 14:14
2005.06.06
Гипперссылка


4-1113818560
Vyacheslav
2005-04-18 14:02
2005.06.06
Как выбрать директорию с помощю Dialog - a ???


6-1111128147
leonidus
2005-03-18 09:42
2005.06.06
Копирование файлов по локальной сети


6-1111410766
Chaser
2005-03-21 16:12
2005.06.06
Indy TCP клиент и сервер не коннектятся если 2 сетевухи на компе




   Наверх