Enable resolutions not exposed by display programmatically on NVIDIA GPUs
我正在研究一种解决方案,需要为一组系统上的特定连接显示器设置自定义分辨率。我现在的工作正常,但前提是已通过 NVIDIA 控制面板手动检查了"启用显示器未公开的分辨率"选项(可在"显示"->"更改分辨率">"自定义...">"启用分辨率"下找到)不被显示器暴露)。
有没有办法以编程方式启用此选项,最好是通过 NVIDIA 的核心 SDK - NVAPI。
可以通过 Windows API 公开的 ChangeDisplaySettingsEx 函数启用设置自定义分辨率,方法是传入
代码提取示例用法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | DWORD deviceIndex = 0; DISPLAY_DEVICE displayDevice = { 0 }; displayDevice.cb = sizeof(DISPLAY_DEVICE); while (EnumDisplayDevices(NULL, deviceIndex, &displayDevice, 0)) { deviceIndex++; DEVMODE deviceMode = { 0 }; deviceMode.dmSize = sizeof(DEVMODE); if (!EnumDisplaySettings(displayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &deviceMode)) continue; auto result = ChangeDisplaySettingsEx(displayDevice.DeviceName, &deviceMode, NULL, CDS_ENABLE_UNSAFE_MODES, NULL); if (result != DISP_CHANGE_SUCCESSFUL) { // Handle failure here... } } |
请注意,这将为所有显示设备启用不安全的图形模式。