From d21e3a1d2528847b9f260d0dccb4b4de6e6eacd2 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 24 Feb 2013 08:58:05 +0000 Subject: [PATCH] [DESK] - Remove the SCRNSAVE.EXE value from the registry and set ScreenSaveActive to "0" as this is the setting for "None" screen saver. - Change screen saver settings the way Windows XP does it. svn path=/trunk/; revision=58360 --- reactos/boot/bootdata/hivedef.inf | 3 +-- reactos/dll/cpl/desk/screensaver.c | 41 +++++++++++++----------------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/reactos/boot/bootdata/hivedef.inf b/reactos/boot/bootdata/hivedef.inf index 39dfeb9df4a..a44aed14023 100644 --- a/reactos/boot/bootdata/hivedef.inf +++ b/reactos/boot/bootdata/hivedef.inf @@ -91,8 +91,7 @@ HKCU,"Control Panel\Desktop","DragHeight",0x00000000,"4" HKCU,"Control Panel\Desktop","DragWidth",0x00000000,"4" HKCU,"Control Panel\Desktop","PaintDesktopVersion",0x00010001,"0" HKCU,"Control Panel\Desktop","HungAppTimeout",2,"5000" -HKCU,"Control Panel\Desktop","SCRNSAVE.EXE",0,"" -HKCU,"Control Panel\Desktop","ScreenSaveActive",2,"1" +HKCU,"Control Panel\Desktop","ScreenSaveActive",2,"0" HKCU,"Control Panel\Desktop","ScreenSaverIsSecure",2,"1" HKCU,"Control Panel\Desktop","ScreenSaveTimeOut",0,"600" HKCU,"Control Panel\Desktop","WaitToKillAppTimeout",2,"20000" diff --git a/reactos/dll/cpl/desk/screensaver.c b/reactos/dll/cpl/desk/screensaver.c index a75f3c279f2..dfd63614e91 100644 --- a/reactos/dll/cpl/desk/screensaver.c +++ b/reactos/dll/cpl/desk/screensaver.c @@ -473,7 +473,7 @@ SetScreenSaver(HWND hwndDlg, PDATA pData) { INT Time; BOOL bRet; - TCHAR szTime[256], Sec; + TCHAR Sec; UINT Ret; /* Set the screensaver */ @@ -485,36 +485,18 @@ SetScreenSaver(HWND hwndDlg, PDATA pData) REG_SZ, (PBYTE)pData->ScreenSaverItems[pData->Selection].szFilename, _tcslen(pData->ScreenSaverItems[pData->Selection].szFilename) * sizeof(TCHAR)); + + SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, TRUE, 0, SPIF_UPDATEINIFILE); } else { /* Windows deletes the value if no screensaver is set */ RegDeleteValue(regKey, _T("SCRNSAVE.EXE")); DeleteMode = TRUE; + + SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, FALSE, 0, SPIF_UPDATEINIFILE); } - /* set the screensaver time delay */ - Time = GetDlgItemInt(hwndDlg, - IDC_SCREENS_TIMEDELAY, - &bRet, - FALSE); - if (Time == 0) - Time = 60; - else - Time *= 60; - - _itot(Time, szTime, 10); - RegSetValueEx(regKey, - _T("ScreenSaveTimeOut"), - 0, - REG_SZ, - (PBYTE)szTime, - _tcslen(szTime) * sizeof(TCHAR)); - - if (DeleteMode) Time = 0; - - SystemParametersInfoW(SPI_SETSCREENSAVETIMEOUT, Time, 0, SPIF_SENDCHANGE); - /* Set the secure value */ Ret = SendDlgItemMessage(hwndDlg, IDC_SCREENS_USEPASSCHK, @@ -529,6 +511,18 @@ SetScreenSaver(HWND hwndDlg, PDATA pData) (PBYTE)&Sec, sizeof(TCHAR)); + /* Set the screensaver time delay */ + Time = GetDlgItemInt(hwndDlg, + IDC_SCREENS_TIMEDELAY, + &bRet, + FALSE); + if (Time == 0) + Time = 60; + else + Time *= 60; + + SystemParametersInfoW(SPI_SETSCREENSAVETIMEOUT, Time, 0, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE); + RegCloseKey(regKey); } } @@ -735,7 +729,6 @@ ScreenSaverPageProc(HWND hwndDlg, { if (command == BN_CLICKED) { - MessageBox(NULL, TEXT("Feature not yet implemented"), TEXT("Sorry"), MB_OK); PropSheet_Changed(GetParent(hwndDlg), hwndDlg); } break;