1

我正在研究一种解决方案,其中需要为一组系统上的特定连接显示器设置自定义分辨率。我现在的工作正常,但只要通过 NVIDIA 控制面板手动检查了“启用显示器未公开的分辨率”选项(可在“显示”->“更改分辨率”>“自定义...”>“启用未公开的分辨率”下找到)由显示器)。

有没有办法以编程方式启用此选项,最好是通过 NVIDIA 的核心 SDK - NVAPI

4

1 回答 1

1

可以通过Windows API 公开的ChangeDisplaySettingsExCDS_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...
    }
}

请注意,这将为所有显示设备启用不安全的图形模式。

于 2016-02-08T12:52:24.243 回答