1

システムのセットで特定の接続されたディスプレイにカスタム解像度を設定する必要があるソリューションに取り組んでいます。私が今持っているものは正常に動作しますが、「ディスプレイによって公開されていない解像度を有効にする」オプションが NVIDIA コントロール パネル ([ディスプレイ] -> [解像度の変更] > [カスタマイズ...] > [公開されていない解像度を有効にする] の下にあります) から手動でチェックされている場合に限ります。ディスプレイによる)。

このオプションをプログラムで、できれば NVIDIA のコア SDK - NVAPIを使用して有効にする方法はありますか。

4

1 に答える 1

1

カスタム解像度の設定は、Windows API によって公開されているChangeDisplaySettingsEx関数を使用して有効にすることができCDS_ENABLE_UNSAFE_MODES、4 番目のパラメーターとしてを渡します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 に答える