Blog. Just Blog

Как узнать название шрифта в диалоговом окне приложения

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Образ мышления: Assembler | Автор: ManHunter
Для того, чтобы получить информацию о шрифте, используемом в окне или его отдельном элементе, можно применить следующий код.
  1.         ; Отправить окну запрос на получение информации о шрифте
  2.         invoke  SendMessage,[hWindow],WM_GETFONT,NULL,NULL
  3.         or      eax,eax
  4.         ; Данные о шрифте получить не удалось
  5.         jz      cant_get_font
  6.  
  7.         ; Получить объект с описанием шрифта
  8.         invoke  GetObject,eax,sizeof.LOGFONT,font
  9.         ; Теперь в font.lfFaceName строка названия шрифта
Сперва окну посылается сообщение WM_GETFONT, которое возвращает хэндл объекта-описателя шрифта. Если хэндл получить не удалось, то окно использует системный шрифт по умолчанию или не обрабатывает это сообщение. Но это еще не все. Чтобы получить подробное описание со всеми характеристиками шрифта, надо при помощи функции GetObject из полученного хэндла заполнить структуру LOGFONT. Один из параметров этой структуры lfFaceName - строка ASCIIZ с названием шрифта, максимальная длина которой 32 символа. Очень быстро и просто. У меня такой трюк используется в программе WinDowzer.

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

Пример программы с исходным текстом (FASM)Пример программы с исходным текстом (FASM)

Get.Window.Font.Demo.zip (2,275 bytes)


Поделиться ссылкой ВКонтакте
Просмотров: 9253 | Комментариев: 7

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

Комментарии

Отзывы посетителей сайта о статье
Мари (15.05.2019 в 12:59):
[спам] - сервис автоматического определения всех шрифтов на странице по ссылке
ManHunter (21.03.2013 в 21:50):
Кто сказал, что там текст в виде текста, а не картинка?
Hint (21.03.2013 в 21:45):
Вот открыл я окно C:\Windows\System32\fontview.exe установщика шрифтов, Microsoft Sans Serif . Но пишет Default system font. Хотя в нем Microsoft Sans Serif.
ManHunter (20.03.2013 в 21:56):
Это значит, что приложения не используют какой-либо нестандартный шрифт. Вполне нормальное явление.
Hint (20.03.2013 в 21:52):
Супер! А, что значит на большинства приложениях Default System Font ?
Grey (19.03.2013 в 14:46):
Отличная категория, все статьи хороши.
Толян (16.03.2013 в 15:12):
Ништяк!

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 2 (0.0078 сек.) / Память: 4.5 Mb
Наверх