Author: mjansen Date: Sat May 27 09:37:16 2017 New Revision: 74679
URL: http://svn.reactos.org/svn/reactos?rev=74679&view=rev Log: [SYSSETUP][UNATTENDED] Allow changing the resolution automatically. CORE-13315
Modified: trunk/reactos/boot/bootdata/bootcd/unattend.inf trunk/reactos/dll/win32/syssetup/wizard.c
Modified: trunk/reactos/boot/bootdata/bootcd/unattend.inf URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/bootcd/unatte... ============================================================================== --- trunk/reactos/boot/bootdata/bootcd/unattend.inf [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/bootcd/unattend.inf [iso-8859-1] Sat May 27 09:37:16 2017 @@ -56,3 +56,11 @@ ; [GuiRunOnce] ; %SystemRoot%\system32\cmd.exe
+ +; enable this section to change resolution / bpp +; setting a value to 0 or skipping it will leave it unchanged +; [Display] +; BitsPerPel = 32 +; XResolution = 1440 +; YResolution = 900 +; VRefresh = 0
Modified: trunk/reactos/dll/win32/syssetup/wizard.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/syssetup/wizard.c... ============================================================================== --- trunk/reactos/dll/win32/syssetup/wizard.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/syssetup/wizard.c [iso-8859-1] Sat May 27 09:37:16 2017 @@ -2211,6 +2211,70 @@ } while (SetupFindNextLine(&InfContext, &InfContext));
+ if (SetupFindFirstLineW(pSetupData->hUnattendedInf, + L"Display", + NULL, + &InfContext)) + { + DEVMODEW dm = { { 0 } }; + dm.dmSize = sizeof(dm); + if (EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm)) + { + do + { + int iValue; + if (!SetupGetStringFieldW(&InfContext, + 0, + szName, + sizeof(szName) / sizeof(WCHAR), + &LineLength)) + { + DPRINT1("Error: SetupGetStringField failed with %d\n", GetLastError()); + return; + } + + if (!SetupGetStringFieldW(&InfContext, + 1, + szValue, + sizeof(szValue) / sizeof(WCHAR), + &LineLength)) + { + DPRINT1("Error: SetupGetStringField failed with %d\n", GetLastError()); + return; + } + iValue = _wtoi(szValue); + DPRINT1("Name %S Value %i\n", szName, iValue); + + if (!iValue) + continue; + + if (!wcscmp(szName, L"BitsPerPel")) + { + dm.dmFields |= DM_BITSPERPEL; + dm.dmBitsPerPel = iValue; + } + else if (!wcscmp(szName, L"XResolution")) + { + dm.dmFields |= DM_PELSWIDTH; + dm.dmPelsWidth = iValue; + } + else if (!wcscmp(szName, L"YResolution")) + { + dm.dmFields |= DM_PELSHEIGHT; + dm.dmPelsHeight = iValue; + } + else if (!wcscmp(szName, L"VRefresh")) + { + dm.dmFields |= DM_DISPLAYFREQUENCY; + dm.dmDisplayFrequency = iValue; + } + } + while (SetupFindNextLine(&InfContext, &InfContext)); + + ChangeDisplaySettingsW(&dm, CDS_UPDATEREGISTRY); + } + } + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce", 0,