Разделы реестра WCS
WCS использует разделы реестра для сигнала о том, что произошли определенные события профиля цвета. Приложения должны запрашивать эти разделы реестра для обновленного состояния профиля цвета системы.
Изменен профиль активного цвета
Приложения могут потребовать реагирования на события изменения цветового профиля для устройства монитора; это гарантирует, что они всегда имеют точные сведения о цвете для целевого объекта, даже если пользователь или другое приложение изменили активный профиль для устройства.
Классические приложения
Классические приложения должны ожидать изменений в реестре, чтобы определить, когда сопоставления цветового профиля изменились с помощью RegNotifyChangeKeyValue. Приложение должно зарегистрировать как для изменений сопоставления профилей пользователей, так и для системных изменений.
RegNotifyChangeKeyValue следует инициализировать с помощью HKEY, предоставленного RegOpenKeyEx. RegOpenKeyEx следует инициализировать с помощью следующих расположений дерева реестра:
Сопоставления профилей пользователей | HKEY_CURRENT_USER SOFTWARE\Microsoft\Windows NT\CurrentVersion\ICM\ProfileAssociations\Display\{4d36e96e-e325-11ce-bfc1-08002be10318} |
Связи профилей на уровне системы | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e96e-e325-11ce-bfc1-08002be10318} |
При изменении раздела реестра приложение должно сначала запрашивать, используются ли сопоставления на уровне пользователя или системы путем вызова WcsGetUsePerUserProfiles. Затем он должен вызывать wcsGetDefaultColorProfile с правильным значением WCS_PROFILE_MANAGEMENT_SCOPE, чтобы получить новый активный профиль цвета для монитора. Обратите внимание, что не все изменения раздела реестра соответствуют фактическому изменению текущего активного профиля цвета; Mush приложения проверяет, изменился ли профиль, возвращенный WcsGetDefaultColorProfile.
Приложения универсальной платформы Windows (UWP)
Универсальные приложения Windows не имеют доступа к приведенным выше разделам реестра. Вместо этого они должны зарегистрировать обработчик для события DisplayInformation.ColorProfileChanged. Это событие запускается всякий раз, когда активная цветовая профиль для монитора, на котором выполняется приложение. ColorProfileChanged учитывает, используются ли сопоставления профилей на уровне пользователя или системы; эта информация абстрагируется от приложений UWP.
При реагировании на событие ColorProfileChanged приложение должно запрашивать текущий активный профиль с помощью DisplayInformation.GetColorProfileAsync.