2

各画面の画面の向きを C++ または C# から個別に変更するには? ミラーモードでデュアルスクリーンディスプレイ構成を持つ。Intel グラフィックス カードがマシンにインストールされています。EnumDisplaySettings 関数と DeviceMode 構造体を試しました。ただし、拡張モードでのみ機能します。ミラーモードでこの機能で向きを変えようとすると、両方の画面が同じ向きに設定されます。おそらく、Intel ドライバー 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);
4

1 に答える 1

1

CCD APIの使用を試すことができます。これらの関数を使用すると、現在のセッションのVidPNトポロジを操作できます。ただし、呼び出すのが最も簡単な関数ではありません。


編集:

SDC_ALLOW_CHANGESおそらくフラグを除けば、コードに問題はありません。Nvidia カードを搭載したシステムでコードを試しました。回転するターゲットに応じて、2 つのことのいずれかを行います。2 つのターゲットの 2 番目を回転させると、変更が無視されます。Nvidia コントロール パネルで、2 台目のモニターが回転していることがわかりますが、その設定はグレー表示されています。これは、Nvidia ドライバーがあなたのやりたいことをサポートしていないことを示唆しています。最初のターゲットを回転させると、両方のターゲットが回転します。また、ターゲットのスケーリングを に変更してみましたDISPLAYCONFIG_SCALING_STRETCHED。それも違いはありませんでした。SetDisplayConfig は 0 を返します。少なくとも Windows はこの変更に満足しているようです。

Intel ディスプレイ ユーティリティでやりたいことを試してみましたか? Intel ツールでできない場合は、Intel ドライバがサポートしていない可能性があります。サポートされているかどうかについては、Intel の担当者に問い合わせてください。

于 2013-03-01T15:29:55.220 に答える