2015-04-06 1 views
1

Windows 8.1 представила эту нелепую ошибку , где она автоматически определяет масштабирование DPI для пользователя на основе каждого экрана. Я предлагаю пользователям отключить эту функцию, установив флажок в панели управления «Позвольте мне выбрать один уровень масштабирования для всех дисплеев». Это видео с 1:22 минут показывает, где находится настройка: https://www.youtube.com/watch?v=sE3IUTPy1WAКак определить «один уровень масштабирования для всех дисплеев»?

В любом случае, на мой вопрос, как я могу программным образом определить, включен или выключен этот параметр? Есть ли вызов Win API, который я могу сделать, или параметр реестра, который я могу запросить? Если этот параметр отключен, я хочу, чтобы его можно было обнаружить внутри моего приложения.

ответ

1

Вы можете запросить HKCU\Control Panel\Desktop\Win8DpiScaling

Этот ключ и другие связанные с ними ключи задокументированы в DPI-related APIs and registry settings, но соответствующий текст следующим образом:

Панель управления \ Оформление и персонализация \ Дисплей пользователя интерфейс (UI) включает в себя a checkbox: Позвольте мне выбрать один уровень масштабирования для всех моих дисплеев, который контролирует, применяет ли система единый масштабный коэффициент ко всем дисплеям (как в Windows® 8 и более ранних версиях Windows ), так и разные , которые учитывают , учитывают плотность пикселей каждого дисплея (по умолчанию Windows 8.1).

Этот флажок настраивает ключ реестра HKCU \ Control Panel \ Desktop \ Win8DpiScaling в Windows 8.1.

Key value : 0 Meaning : Different scale factors for each display: Windows 8.1 default.Content that is moved from one display to another will be the right size, but can be bitmap-scaled. 
Key value : 1 Meaning : Same scale factor is applied to all displays: Windows 8 and earlier Windows versions behavior.Content that is moved from one display to another might be the wrong size 
+0

Отлично, спасибо. Я буду тестировать – mikew

+0

Er, не должна ли программа использовать вызов api, а не реестр? То есть, если нет апи. –

+0

@ David: Насколько я знаю, API не возвращает значение, выбранное через графический интерфейс. Хотя вы можете вызвать [GetScaleFactorForMonitor] (https://msdn.microsoft.com/en-us/library/windows/desktop/dn302060.aspx) и сравнить значения, нет API, который говорит вам, все ли они одинаковы из-за этого конкретного параметра GUI, или потому, что они были индивидуально настроены на одно и то же значение. – IInspectable