我正在研究一种解决方案,在这种解决方案中,需要为一组系统上的特定连接显示器设置自定义分辨率。我现在的工作很好,但只有当“启用决议,不公开的显示器”选项已经手动检查通过NVIDIA控制面板(发现在显示->更改分辨率>自定义.>启用显示器未公开的分辨率)。
是否有办法以编程方式启用此选项,最好是通过NVIDIA的核心SDK - NVAPI。
发布于 2016-02-08 12:52:24
设置自定义分辨率可以通过Windows公开的ChangeDisplaySettingsEx函数启用,方法是将CDS_ENABLE_UNSAFE_MODES作为第四个参数dwflags传递。(若要禁用,请使用CDS_DISABLE_UNSAFE_MODES。)
代码摘录示例用法:
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...
}
}请注意,这将为所有显示设备启用不安全的图形模式。
https://stackoverflow.com/questions/35031270
复制相似问题