1

Мой рабочий компьютер (Windows 7 Pro x64) имеет два монитора и очень размытый цветовой профиль по умолчанию. Я могу обойти это, запустив панель управления NVIDIA, установив ползунок гаммы примерно на 0,50 и применив изменения. Работает отлично.

Проблема в том, что я работаю удаленно примерно половину времени, а когда я дома, я использую Remote Desktop для подключения к рабочему ПК. Когда я возвращаюсь в офис, настройки гаммы сбрасываются на стандартные, размытые уровни, хотя ползунок гаммы панели управления по-прежнему находится на уровне 0,5.

Мое "исправление" - открыть панель управления и слегка передвинуть ползунок для каждого монитора, чтобы применить новые настройки гаммы. Это работает, но очень раздражает каждый день.

Я вижу людей с похожими проблемами:

Панель управления nVidia сбрасывает настройки гаммы после перезапуска

Моя Гамма автоматически меняет выход из режима ожидания

Хотя у нас та же проблема, я заинтересован в написании сценария решения этой проблемы. В идеале я хотел бы, чтобы при входе в систему выполнялся скрипт, который принудительно перенесет мои настройки гаммы туда, где я их хочу.

Существует ли стандартный способ командной строки для применения настроек гаммы в Windows 7?

1 ответ1

2

Можно сделать что-то подобное, используя такие скриптовые утилиты, как AutoIT, C # и другие языки программирования. Любой язык, который может взаимодействовать с gdi32.dll , например, должен быть в состоянии выполнить эту задачу.

Вот пример, найденный для AutoIt:

Func _SetGamma ( $vRed=128, $vGreen=128, $vBlue=128 )
    Local $n_ramp, $rVar, $gVar, $bVar, $Ret, $i, $dc
    If $vRed < 0 Or $vRed > 386 Then Return -1
    If $vGreen < 0 Or $vGreen > 386 Then Return -1
    If $vBlue < 0 Or $vBlue > 386 Then Return -1
    $dc = DLLCall ( "user32.dll", "int", "GetDC","hwnd", 0 )
    $n_ramp = DllStructCreate ( "short[" & ( 256*3 ) & "]" )
    For $i = 0 to 256
    $rVar = $i * ( $vRed + 128 )
    If $rVar > 65535 Then $rVar = 65535
    $gVar = $i * ( $vGreen + 128 )
    If $gVar > 65535 Then $gVar = 65535
    $bVar = $i * ( $vBlue + 128 )
    If $bVar > 65535 Then $bVar = 65535
    DllStructSetData ( $n_ramp, 1, Int ( $rVar ), $i  ) ; red
    DllStructSetData ( $n_ramp, 1, Int ( $gVar ), $i+256 ) ; green
    DllStructSetData ( $n_ramp, 1, Int ( $bVar ), $i+512 ) ; blue
    Next
    $ret = DLLCall ( "gdi32.dll", "int", "SetDeviceGammaRamp", "int", $dc[0], "ptr", DllStructGetPtr ( $n_Ramp ) )
    $dc = 0
    $n_Ramp = 0
EndFunc ;==> _SetGamma ( )

Источник этого можно найти здесь: TinyBrightnessControler v 1.0.0.2

было бы очень мало работы, чтобы скомпилировать это в исполняемый файл, который может выполняться в сценарии запуска.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .