Я использую WinAPI ChangeDisplaySettingsEx для переключения моей конфигурации windows 10 экранов. Существует более двух экранов, поэтому мне не хватает ScreenSwitch.exe.
Я ссылался на это:
https://www.codeproject.com/Articles/178027/How-to-create-a-display-switcher-for-Windows-XP?msg=3850767#xx3850767xx и успешно отключить экран в этом коде:
string displayName = @"\\.\DISPLAY3";
DEVMODE devMode= new DEVMODE();
devMode.dmPosition.x = 0;
devMode.dmPosition.y = 0;
devMode.dmPelsWidth = 0;
devMode.dmPelsHeight = 0;
devMode.dmFields = DEVMODE_Flags.DM_PELSHEIGHT | DEVMODE_Flags.DM_PELSWIDTH | DEVMODE_Flags.DM_POSITION;
devMode.dmSize = (ushort)Marshal.SizeOf(devMode);
ChangeDisplaySettingsEx(displayName, ref devMode, IntPtr.Zero, (int)(DeviceFlags.CDS_RESET | DeviceFlags.CDS_UPDATEREGISTRY), IntPtr.Zero);
Но я не могу включить экран:
...
devMode.dmPosition.x = -3840;
devMode.dmPosition.y = -1059;
devMode.dmPelsWidth = 3840;
devMode.dmPelsHeight = 2160;
...
ChangeDisplaySettingsEx получил -1 результат означает CHANGE_FAILED Я полагаю, что экран отключен, поэтому для его включения нужно больше информации? Я попытался сохранить DEVMODE, когда экран включен, и отправить его в ChangeDisplaySettingsEx, когда экран отключен. Не работает. Спасибо за любые предложения