最近研究了一下window下顯示器的擴展和屏幕分辨率的修改 ,做一個記錄。
修改分辨率和擴展顯示器主要有兩種方法:
一、用ChangeDisplaySettingsEx來實現
1、EnumDisplayDevices 枚舉所有的顯示器信息,過濾後進行保存
2、EnumDisplaySettings 再次檢查顯示器分辨率是否支持
3、ChangeDisplaySettingsEx 根據DEVMODE的不同配置來設置顯示器爲主顯示器、擴展、分辨率
可以設置擴展所有屏幕,因爲需要。只擴展了Nvida顯卡,並且斷開了Intel的顯卡。
源碼地址:僅用Windows自動API實現 編譯版本VS2013
二、在nvidia顯卡的狀況下使用nvapi來實現,目前用到NvApi版本是nvapi-r337
1、NvAPI_EnumLogicalGPUs 枚舉所有的邏輯GPU
2、NvAPI_GetPhysicalGPUsFromLogicalGPU拿到物理GPU
3、NvAPI_GPU_GetAllDisplayIds拿到顯示器的所有信息(需要兩次獲取)
4、NvAPI_DISP_SetDisplayConfig根據stConnectedGPUDisplayInfo的參數來設置顯示器 主要是進行顯示器的擴展
5、NvAPI_DISP_GetDisplayConfig 拿到顯示器的信息 改邊stConnectedGPUDisplayInfo參數 再NvAPI_DISP_SetDisplayConfig 設置分辨率
主要用到的函數是NvAPI_DISP_SetDisplayConfig,必須要Nvapi庫