Jak z poziomu delphi zahibernować XP ?
0
0
[code]{$WARN SYMBOL_PLATFORM OFF}
procedure SuspendOrHibernate( ASuspend,AForce : Boolean );
var
iVersionInfo: TOSVersionInfo;
iToken : cardinal;
iPriveleg : TTokenPrivileges;
iaresult : cardinal;
begin
FillChar (iPriveleg, SizeOf (iPriveleg), #0);
iVersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
GetVersionEx(iVersionInfo);
if iVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then begin
Win32Check( OpenProcessToken (GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, iToken) );
Win32Check( LookupPrivilegeValue (NIL,'SeShutdownPrivilege',
iPriveleg.Privileges[0].Luid) );
iPriveleg.PrivilegeCount := 1;
iPriveleg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
Win32Check(AdjustTokenPrivileges(iToken,False,iPriveleg,
Sizeof(iPriveleg), iPriveleg, iaresult));
end;
Win32Check( SetSystemPowerState( ASuspend, AForce ) );
end;[/code]
0
Dziękuję. [browar]