c # — изменение ориентации экрана программно в зеркальном режиме windows 7

Как изменить ориентацию экрана каждого экрана отдельно от C ++ или C #? Наличие конфигурации с двумя экранами в режиме зеркала.
Графическая карта Intel установлена ​​на машине. Я попробовал функцию EnumDisplaySettings и структуру DeviceMode. Однако он работает только в расширенном режиме. Если я пытаюсь изменить ориентацию с помощью этой функции в зеркальном режиме, на обоих экранах устанавливается одинаковая ориентация. Может быть, есть способ изменить эти настройки с помощью Intel Driver SDK или любых других функций Windows 7?

ОБНОВЛЕНИЕ 1:

Вот код, который я пробовал с CCD API. Все равно вращается оба дисплея = (

UINT32 PathArraySize = 0;
UINT32 ModeArraySize = 0;
DISPLAYCONFIG_PATH_INFO* PathArray;
DISPLAYCONFIG_MODE_INFO* ModeArray;
DISPLAYCONFIG_TOPOLOGY_ID CurrentTopology;

SetDisplayConfig(0,NULL,0,NULL,SDC_TOPOLOGY_CLONE|SDC_APPLY); //set to clone mode
GetDisplayConfigBufferSizes(QDC_ALL_PATHS, &PathArraySize, &ModeArraySize);

PathArray =   (DISPLAYCONFIG_PATH_INFO*)malloc(PathArraySize * sizeof(DISPLAYCONFIG_PATH_INFO));
memset(PathArray, 0, PathArraySize * sizeof(DISPLAYCONFIG_PATH_INFO));
ModeArray =   (DISPLAYCONFIG_MODE_INFO*)malloc(ModeArraySize * sizeof(DISPLAYCONFIG_MODE_INFO));
memset(ModeArray, 0, ModeArraySize * sizeof(DISPLAYCONFIG_MODE_INFO));
LONG ret = QueryDisplayConfig(QDC_DATABASE_CURRENT,&PathArraySize, PathArray, &ModeArraySize, ModeArray, &CurrentTopology);

PathArray++;
PathArray->targetInfo.rotation =  DISPLAYCONFIG_ROTATION_ROTATE180; //set Second display rotated 180
PathArray--;

SetDisplayConfig(PathArraySize,PathArray,ModeArraySize,ModeArray, SDC_APPLY | SDC_SAVE_TO_DATABASE | SDC_ALLOW_CHANGES | SDC_USE_SUPPLIED_DISPLAY_CONFIG); //apply rotation

free(PathArray);
free(ModeArray);

1

Решение

Вы можете попробовать использовать CCD API. Эти функции позволяют вам манипулировать VidPN топология для вашей текущей сессии. Хотя они не самые простые функции для вызова.


Редактировать:

Я не вижу ничего плохого в вашем коде, кроме, может быть, SDC_ALLOW_CHANGES флаг. Я попробовал ваш код в моей системе, которая имеет карту Nvidia. Это зависит от того, какую цель я вращаю. Если я поверну 2-ю из двух целей, она игнорирует изменение. В панели управления Nvidia я вижу, что 2-й монитор вращается, но его настройки неактивны. Это говорит о том, что драйвер Nvidia не поддерживает то, что вы хотите сделать. Если я вращаю первую цель, это заставляет обе цели вращаться. Я также пытался изменить масштабирование цели на DISPLAYCONFIG_SCALING_STRETCHED, Это также не имело никакого значения. SetDisplayConfig возвращает 0. По крайней мере, Windows, похоже, довольна этим изменением.

Вы пытались делать то, что вы хотите с помощью утилиты дисплея Intel? Если вы не можете сделать это с помощью инструмента Intel, то, возможно, драйвер Intel не поддерживает его. Вы, вероятно, хотите спросить кого-то из Intel о том, поддерживается ли он.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]