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/unatt…
==============================================================================
--- 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.…
==============================================================================
--- 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,