function screensv(Activate: boolean): boolean;
var IntActive: byte;
begin
  if Activate then
    IntActive := 1
  else
    IntActive := 0;

  Result := SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, IntActive, nil, 0) ;
end;

Mam taką funkcję włączającą wygaszacz ekranu, jeśli screensv(false) - ustawia wygaszacz na brak.

Teraz mam drugi kawałek kodu odpowiedzialny że tak powiem za wygaszenie ekranu:

SendMessage(Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 0);

Ten drugi kawałek kodu działa poprawnie, jeżeli w opcjach jest włączony wygaszacz ekranu, to ten kod wygasza mi ekran. Mam jednak problem z pierwszym kodem, otóż jeżeli w opcjach mam ustawiony brak wygaszacza, a włączam go funkcją screensv(true) to nic się nie zmienia, w opcjach dalej zostaje ustawiony na (brak). Mam WinXP, nie wiem czy to od tego zależy. Możecie tą funkcje sprawdzić u siebie?
p.s. (wszystko mi się ładnie kompiluje).