Как программно добавить / изменить / удалить доступные настройки дисплея (ширина, высота, частота обновления)? - PullRequest
1 голос
/ 13 апреля 2019

Я хочу закодировать (в C #) инструмент для добавления / изменения / удаления некоторых из доступных конфигураций отображения Windows (ширина, высота и частота обновления).

Можно ли это сделать программно? Я потратил много часов, пытаясь найти что-то об этом в Интернете, но мне не повезло.

Причина, по которой я этого хочу, заключается в том, что некоторые старые полноэкранные игры постоянно устанавливают частоту обновления до 60 Гц по сравнению с тем, что было при запуске игры (в моем случае - 120 Гц). Я могу решить эту проблему дважды, используя Alt-Tab, но вместо этого я хочу просто ограничить доступные конфигурации дисплея (или изменить частоту обновления для некоторых из них).

Прежде чем рассмотреть все это, я попытался решить мою проблему с помощью следующих попыток:

  1. Перехват клавиатуры (с использованием этого класса Глобальный захват клавиатуры в приложении C # ), а затем попытка принудительного изменения отображения при нажатии горячей клавиши. Он отлично работает практически для всех обычных приложений. Но когда запускается полноэкранная игра, событие keydown не срабатывает. Либо это невозможно, когда игра в полноэкранном режиме имеет фокус, либо я не просто знаю, как это сделать правильно (весьма вероятно, поскольку я новичок в этом отношении).

  2. Попытка использования таймера для периодической проверки определенного разрешения и, если обнаружена частота 60 Гц, попробуйте установить его на 120 Гц. Таймер срабатывает, и код пытается сменить монитор (который кратковременно мигает), но частота обновления не меняется.

Другая идея, которая у меня возникла, состояла в том, чтобы использовать Mhook или Detours для перехвата вызова «изменить настройки дисплея». Но я не знаю, сработает ли это. И у меня также нет опыта работы с C ++. Поэтому я действительно не хочу идти по этому пути, если смогу избежать этого.

1 Ответ

0 голосов
/ 13 апреля 2019

Может ли это быть программно? Я потратил много часов, пытаясь найти что-то об этом в Интернете, но не повезло.

Эти настройки не являются частью стандартного .Net Framework, но есть интерфейс для управления этими настройками для окон, проблематично использующими win32 API. Вы можете здесь узнать, как вызывать API-интерфейсы Windows с использованием .Net Framework. тогда вы можете вызвать Windows API для например, изменить разрешение .

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