2013-03-01 120 views
1

如何從C++或C#中分別更改每個屏幕的屏幕方向?在鏡像模式下具有雙屏幕顯示配置。 Intel顯卡已安裝在機器上。我嘗試了EnumDisplaySettings函數和DeviceMode結構。但是,它只能在擴展模式下工作。如果我在鏡像模式下嘗試通過此功能改變方向,則兩個屏幕都設置爲相同的方向。也許有方法通過英特爾驅動程序SDK或任何其他本地Windows 7功能來更改此設置?在鏡像模式下以編程方式更改屏幕方向Windows 7

UPDATE 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); 
+0

鏡像模式的要點是讓一個屏幕精確顯示另一個屏幕上的內容。爲什麼你會希望他們在不同的方向在這種模式? – RobH 2013-03-01 17:27:07

+0

有一種裝置,屏幕安裝旋轉180度以改善某個位置的視角。如果連接了其他顯示器,其中一個屏幕始終以鏡像模式翻轉。在擴展模式下,可以單獨旋轉它們。 – Yaroslav 2013-03-01 22:08:41

+0

對!我忘記了這個用例。 – RobH 2013-03-04 17:13:58

回答

1

您可以嘗試使用CCD APIs。這些功能可以讓您操作VidPN拓撲當前會話。它們不是最簡單的函數調用雖然。


編輯:

我不從也許是SDC_ALLOW_CHANGES標誌看不到你的代碼錯誤,除了我想你的代碼,我的系統具有Nvidia顯卡上它做的兩件事情取決於哪個目標。我旋轉。如果我旋轉兩個目標中的第二個,它會忽略這個變化。在Nvidia控制面板中,我可以看到第二個顯示器已旋轉,但其設置呈灰色。這表明Nvidia驅動程序不支持你想要做的事情。如果我旋轉第一個目標,它會導致兩個目標旋轉。我也嘗試將目標縮放比例更改爲DISPLAYCONFIG_SCALING_STRETCHED。這也沒有什麼區別。 SetDisplayConfig返回0.Windows至少似乎對變化感到滿意。

您是否嘗試過使用英特爾顯示實用程序來執行所需操作?如果你無法使用英特爾工具,那麼英特爾驅動程序可能不支持它。你可能想問一個來自Intel的人是否支持它。

+0

這似乎是我真正需要的。奇怪我以前找不到這個API。謝謝,我會嘗試。 – Yaroslav 2013-03-01 22:27:40

+0

請在第一篇文章中查看我的代碼。它仍然翻轉兩個屏幕。有任何想法嗎? – Yaroslav 2013-03-04 01:50:08

+0

評論在編輯部分。 – Camford 2013-03-04 12:26:10

相關問題