Как я могу определить, когда шрифт добавлен, удален или изменен? - PullRequest
0 голосов
/ 18 июня 2019

Это отличается от определения , установлен ли шрифт.Я делаю приложение WPF и хочу, чтобы приложение могло реагировать на то, что пользователь устанавливает или удаляет шрифты в режиме реального времени.Как я могу это сделать?Есть ли способ взаимодействия со службой кэширования шрифтов Windows, например?

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Как предположил Джими, прослушивание сообщений WM_FONTCHANGE в моем главном окне позволяет мне обнаруживать, когда шрифт добавляется или удаляется.

0 голосов
/ 18 июня 2019

Может быть, один из 2 способов

  1. самый хакерский способ , вероятно, вероятно, отслеживает папку %windir%\fonts, однако вы не сможете гарантировать, что они загружены ресурсы и могут использоваться еще

  2. Записать модуль ввода DLL в hook и прокси-вызовы AddFontResource / AddFontResourceEx Api, тогда вы узнаете, когда что-то загрузило ресурс шрифта

Возможно, вам будет полезно понять, как шрифты загружаются в систему

Установка и удаление шрифта

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

...

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