[ MyWay @ 18.05.2004. 09:39 ] @
Imam problem: krljav PC a treba mi stalno da bude online, i on se lepo posle 12-20 h rada zaglupi (i jedino reboot mašine uradi posao) pa sam kao rešenje smislio da napišem kodić u Delphi-ju koj bi ga reboot-ovao na npr 12h. Jedini problem je što NE ZNAM KAKO
Ajd' upomoć dobri ljudi
[ neor @ 19.05.2004. 14:23 ] @
Ovo restartuje XP. Za Win9x mislim da je dovoljan samo red sa ExitWindowsEx.

Code:

program Reboot;
uses  windows;
var
  TokenHandle,ReturnLength: Cardinal;
  NewState: TTokenPrivileges;
begin
  if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, TokenHandle) then
  begin
    try
      NewState.PrivilegeCount := 1;
      LookupPrivilegeValue(nil, 'SeShutdownPrivilege', NewState.Privileges[0].Luid);
      NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      AdjustTokenPrivileges(TokenHandle, False, NewState, SizeOf(NewState), nil, ReturnLength);
    finally
      CloseHandle(TokenHandle);
    end;
  end;

  { Ostaviti samo jedan od sledecih redova }
  //ExitWindowsEx(EWX_LOGOFF); //0
  //ExitWindowsEx(EWX_SHUTDOWN); //1
  ExitWindowsEx(EWX_REBOOT); //2
  //ExitWindowsEx(EWX_FORCE); //4
  //ExitWindowsEx(EWX_POWEROFF,0); //8
  //ExitWindowsEx(EWX_FORCEIFHUNG); //16
  //SetSystemPowerState(False,False); //Hibernate

end.
[ MyWay @ 22.05.2004. 21:48 ] @
Citat:
neor:Ovo restartuje XP. Za Win9x mislim da je dovoljan samo red sa ExitWindowsEx.

Prvo, hvala za kod. Nisam još probao (nemam Delphi ovde), ali imam dodatno pitanje:
Spominješ razlike za različite OS, da li i šta treba menjati za NT4.0 (spominjao sam krljav PC)?
[ neor @ 23.05.2004. 11:03 ] @
Za NT/2000/XP treba onaj deo sa postavljanjem privilegija, za 9x toga nema.
Mislim da hibernacija radi samo na XP a ostalo radi na svim verzijama.