ScreenSaver enable/disable

ScreenSaver enable/disable

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Snimi kao SSdisabler.dpr

program SSdisabler; {$APPTYPE CONSOLE} uses   SysUtils, windows, registry; var   state: String;   reg: TRegistry;   setState: String; begin   reg := TRegistry.Create;   with reg do   begin     try       if OpenKey('\Control Panel\desktop', False) then       begin         state := reg.ReadString('ScreenSaveActive');         if state = '0' then setState := '1';         if state = '1' then setState := '0';         reg.WriteString('ScreenSaveActive', setState);         //update changes         SystemParametersInfo           (SPI_SETSCREENSAVEACTIVE, 0, nil, SPIF_SENDWININICHANGE);         MessageBox (0,PChar('Screen Saver state was ' + state + ', now it is set to ' + setState), PChar ('Done'),MB_OK);       end     finally       reg.free     end;   end; end.

Iz Display Properties ne moze da se vidi da li je ovaj program iskljucio Screen Saver ili ne. Jedino sa Regedit moze da se utvrdi stanje u HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveActive .

Edit:
Malopre sam zaboravio da kazem, program prvo pogleda stanje, ako je SS ukljucen onda ga iskljucuje i suprotno.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

isti princip moze da se primeni i na druge jezike, C/C++, C#, Basic... posto je u pitanju samo vrednost u registry bazi...



offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Gledao sam da se sto vise oslonim na WinAPI, da bi EXE bio sto manji. Muku mi je zadalo dok sam se setio da mogu ShowMessage da zamenim sa MessageBox. ShowMessage zahteva unit Dialogs => 300kb veci EXE...
Moze da se izostavi i unit SysUtils, ali mislim da ce ipak kompajler automatski da ga doda cak i ako ga nema u USES.

offline
  • Pridružio: 26 Jun 2004
  • Poruke: 32
  • Gde živiš: Vranje

Kompajler ne 'dodaje' nijedan unit u kompajlirani kod, osim system.pas koji sadrzi neke osnovne tipove i funkcije (PChar, TRUE, FALSE, Read(), Write() itd..).

Moze da se izostavi i SysUtils i Registry unit (tako ce kompajlirani program biti mnogo manji - mislim da SysUtils dodaje ~23kb, a Registry unit cak ~70kb).
Umesto Registry klasa se mogu koristiti RegCreateKeyEx, RegSetValueKeyEx, RegQueryValue API-ji..
Malo kasnije cu postovati source.

Velicina kompajlirane verzije je ~15 kb

{$APPTYPE GUI} uses   Windows; var   oldState,   newState : String;   hndKey   : HKEY;   ValSize  : Cardinal; begin   If RegOpenKeyEx(HKEY_CURRENT_USER,                   'Control Panel\Desktop',                   0,                   KEY_ALL_ACCESS,                   hndKey) = ERROR_SUCCESS Then   Begin     RegQueryValueEx(hndKey, 'ScreenSaveActive', nil, nil, nil, @ValSize);     oldState := StringOfChar(' ', ValSize);     RegQueryValueEx(hndKey, 'ScreenSaveActive', nil, nil, PByte(oldState), @ValSize);     newState := Chr(-((Ord(oldState[1]) - 48) - 1) + 48) + #0;     RegSetValueEx(hndKey, 'ScreenSaveActive', 0, REG_SZ, @newState[1], SizeOf(newState));     SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, nil, SPIF_SENDWININICHANGE);     MessageBox(0,                PAnsiChar('Screen Saver state was ' + oldState[1] + ', now it is set to ' + newState[1]),                PAnsiChar('Done'),                mb_OK);   End; end.

[mod::gamzzy] Ne udvajaj poruke!

Ko je trenutno na forumu
 

Ukupno su 1043 korisnika na forumu :: 33 registrovanih, 6 sakrivenih i 1004 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Aleksandar Tomić, bigfoot, bokisha253, Brana01, brundo65, ccoogg123, Centauro, Darko8, darkojbn, darkstar101, DPera, Georgius, goxin, havoc995, Koridor, Litostroton, manda87, mane123, mgolub, mikki jons, milenko crazy north, miodrag, MrNo, nextyamb, radionica1, sasa87, Stanlio, Tas011, Tvrtko I, vaso1, VJ, vukovi, Zmaj Ognjeni Vuk