C# Windows 10, SetDeviceGammaRamp не работает с несколькими мониторами и / или картой Nvidia? Слишком много постов сделано на семафор - PullRequest
0 голосов
/ 01 мая 2020

Попытка управления гаммой монитора с помощью C# с использованием DLLImport для запуска SetDeviceGammaRamp в gdi32.dll. Аналогично ответу на этот вопрос, который аналогично управляет яркостью: SetDeviceGammaRamp просто мигает экраном .

Проблема в том, что SetDeviceGammaRamp никогда не работает на моей основной рабочей станции, на которой установлена ​​видеокарта Nvidia GTX 1070 и 3 монитора прилагается к нему. Он всегда возвращает false, первоначально с ошибкой «Слишком много постов было сделано на семафор». После этой ошибки он продолжает возвращать false и не работает, но с кодом ошибки 0 («Операция успешно завершена») , Это приложение Windows Forms, если это имеет значение. Я также попробовал консольную версию, и она также, но не удалась, но не с ошибкой семафора, просто с ошибкой «успешно завершено».

Интересно, что если я запускаю точно такое же приложение на P C без видеокарты и только с одного монитора код работает! Однако после многократного запуска функции она в конечном итоге перестанет работать с одной и той же ошибкой семафора на этом компьютере, пока приложение не будет перезапущено, но, по крайней мере, я знаю, что SetDeviceGammaRamp может по-прежнему работать.

Я совершенно не знаю, как устранить ошибку или почему она вообще не работает на моей основной рабочей станции. Это потому, что у меня есть видеокарта, и я не использую встроенную графику? Это потому что у меня несколько мониторов? Я пытался указать, что указанный c монитор D C использует код, подобный этому ( Как изменить гамма-диаграмму монитора с одним дисплеем (NVidia Config)? ), но результаты на моей основной рабочей станции всегда одинаковы.

Последнее замечание - оно также работает только при компиляции. Если запустить приложение через Visual Studio (отладка или выпуск), произойдет сбой с другой ошибкой «Загрузчику ресурсов не удалось найти файл MUI», но, возможно, это может быть нормально при доступе к системным DLL таким образом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...