iteg
|
Posted: Sat Nov 23, 2024 14:20 Post subject: |
|
|
1)
Quote: | Начнем явно с бага - на вкладке Ресурсы внизу дерева есть панель со столбцами "Свойство \ Значение" ... Чтобы полосы прокрутки не появлялись. |
Да, знаю про это. Добавил в список для решения.
2)
Quote: | Ок, раз просто 1 это вроде как прямое указание на стандартный тип ресурса- пусть так и пишется |
1 - это принятый Microsoft идентификатор, а не имя.
https://learn.microsoft.com/en-us/windows/win32/menurc/versioninfo-resource
Описание параметра "versionID" - "Version-information resource identifier. This value must be 1."
3)
Формат вывода типа ресурса - "<оригинальный тип ресурса> (<интерпретируемый тип ресурса> (<текстовое имя интерпретируемого тип ресурса>))".
Во время построения дерева ресурсов плагин анализирует каждый тип ресурса и, если необходимо, задает новый.
Например, типа ресурса PNG нет, ресурс имеет тип RT_BINARY = 0 (не рассматриваем иконки), но я его интерпретирую как свой тип RT_PNG = 27. Получается - "0 (27 (PNG))".
Круглые скобки использую для отображения количества элементов или для расшифровки смысла значения перед ними.
С 1 по 25 константы стандартные, после 25 - мои.
RT_CURSOR, RT_STRING, RT_VERSION и т.д.
Стандартные константы описаны, если установлена Visual Studio, например, в:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\WinUser.h
4)
Quote: | Для раздела VS_FIXEDFILEINFO походу добавился вывод поля File Date |
Это рудимент для старых ОС. Насколько помню, использовалось загрузчиком исполняемых файлов для решения проблемы версионности и зависимостей.
Структура tagVS_FIXEDFILEINFO в:
C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\verrsrc.h
или
https://learn.microsoft.com/en-us/previous-versions/ms915510(v%3dmsdn.10)
5)
Quote: | А вот данные про Язык и Кодовую страницу - нет, не понимаю.
Ведь из справок и глазками в редакторе RC-файла мы же четко поняли, что ВСЯ инфа о языке присутствует ЛИШЬ
внутри этого ресурса в полях секции "StringFileInfo" в заголовке BLOCK "lang-charset".
|
Описание структуры секции ресурсов:
https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#the-rsrc-section
6)
Quote: | Ну и скобочках вижу Английский (США). А потом идет кодовая страница "0 - ANSI - кириллица" |
Согласен, что сбивает понимание, но такой результат выдает ОС. "ANSI" - определяет 8-битную кодировку, "кириллица" - определяет использование "Cyrillic script" для таких языков как русский, украинский, белорусский, болгарский, сербская кириллица, македонский и т.д. Сопоставимо с Windows-1251.
По умолчанию поле CodePage в ресурсе 0.
7)
Quote: | А то и для Иконок вдруг появляются эти блоки, и инфа о том, что не вяжется с графический примитивами... |
Каждый ресурс имеет "Level 3 - Language" и поле CodePage.
8 )
Quote: | НО когда мы зайдем в подпункты этого подменю - мы увидим раздельно "Свойство", раздельно ОПЯТЬ "Значение". Т.е. как бы масломасляное. |
Этот элемент контекстного меню строится динамически и имена подэлементов меню берутся из названий колонок списочного элемента. "Копировать значение" это выполняемое действие, далее подэлемент меню "Значение" - это заголовок соответствующей колонки, из которой пользователь будет копировать данные.
9)
Quote: | Там вот НЕТ в таблицах языков 0 и 9! |
Предполагаю, что это или рудименты или несут системное значение. Подстветку пока не реализовал.
10)
Quote: | НО правда по прежнему висит сугубо уже теоретический, но тем не менее вопрос - это как же они умудрились просрать справку, что по факту надо делать НЕ ТО, что там описано!? |
Занимаясь разбором системных структур Windows ОС, понял, что на официальную справку полностью полагаться нельзя. Описания структур на сайте Microsoft часто содержат ошибки, неточности или только общее описание. Приходится сверять с описанием в h-ках, искать в других источниках, реверсировать приложения и системные модули и т.д.
11)
Quote: | НО! вот где и как вдруг оказалось расписанным, что именования ресурсов - ВСЕ имена ресурсов - имеют какой-то язык и кодостраницу? |
Описание структуры секции ресурсов:
https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#the-rsrc-section
12)
Quote: | Та самая панелька, что я описывал как имеющую баг относительно раздвигания ее размеров по высоте - кажется
становится все менее полезной?
|
Удобна при большом количестве элементов. Не надо запоминать идентификатор, менять режим отображения и искать в списке ресурсов для получения свойств.
12)
Quote: | Раскрываю этот один узел и вижу элемент.... А откуда у него имя "7"? |
STRINGTABLE
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
BEGIN
0 "Test1"
11 "Test2"
16 "Test3"
100 "Test4"
101 "Test5"
<идентификатор строки> "строка"
END
Будет 3 блока: 1, 2 и 7.
Ресурсный компилятор для STRINGTABLE создает блоки по 16 элементов и автоматически проставляет блокам индексы/имена. Индексация начинается с 1.
Т.е. идентификаторы строк с 0 по 15 - это блок с индексом 1.
16 по 31 - это блок с индексом 2.
Например, берем строку с идентификатором 0xFE90 делим на 16 = 4073 + 1 = 4074 индекс блока. |
|