Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: PE Viewer 3.0 
Author Message
Destiny



PostPosted: Thu Dec 05, 2024 20:50    Post subject: Reply with quote

День добрый!

1) Хорошо, что в ТУДУ листе. причем сразу можно будет еще и в пп. 3) тут глянуть - я там кое-что расписал.

2) А вот тут стоп)) минутку внимания... Да, я очень даже в курсе ЧЕМ по сути эта цифра является.
НО на секундочку - мы же про дерево говорим? В котором предоставлены некоторые данные.
И у данных - как не отнекивайся - есть имя в дереве. И это название того узла/элемента, о котором идет речь.
Ну и конечно же в моих текстах эти понятия точное и обобщенное=ИМЯ - слегка перемешиваются. Но тут имхо
по другому просто и не получится. Поэтому просто давайте согласимся, что ИМЯ в дереве ресурсов - имеет место
быть. А чем оно по сути в недрах РЕ-формата/структур версионности является - это уже слегка вторичный момент.

3) И вот плавно мы переходим к именам данных, использованных в панельке. И в узлах дерева.
И суть вашего уточнения в том, что я неверно подошёл к делу анализа той текстовой инфы в том ее виде, в котором
я это увидел сейчас в панельке и в дереве. Так вот, если оказывается есть двойной смысл Формата вывода типа ресурса:
Quote:
"<оригинальный тип ресурса> (<интерпретируемый тип ресурса> (<текстовое имя интерпретируемого тип ресурса>))".

ТО очень само по себе напрашивается предложение выводить НЕ в одной ячейке данные! Если речь про панельку. Уж тогда
и используйте этот табличный формат ввода на полную! Делайте ДВЕ колонки значений: Общепризнанное и Плагинчатое, ну
или внутреннее представление. Чтобы одним взглядом можно было понять:
Code:
Общепризнанное  || Внутреннее
   значение     ||  значение
"0 (RT_BINARY)" || "27 (PNG)"

типа как-то так. Потому как идея с инфой за скобочками - уж больно тесно вяжется с просто кол-вом, потому как вы же
именно эту концепцию для имён типов ресурсов используете и пишите об этом. Типа: Dialog (1), Icon Group (2).

4)
Quote:
Для раздела VS_FIXEDFILEINFO походу добавился вывод поля File Date
Quote:
Это рудимент для старых ОС.

ХМ, ну вроде даже если судить по этому H-файлу, что вы указали, и по ссылке, что вы дали - может и не стоит даже эти нули ТАК
чётко выписывать? Просто имя поля указать - а суть текстом так и подтвердить - мол, данные нулёвые, де-факто не задаваемые.
И уж тем более не пытаться перевести их какую-то правильную дату... (01.01.1601 3:00:00) - это дичь какая-то)))

5) Вот тут не допонял по-прежнему. Точнее наверно исходник виноват - он не очень-то доходчиво доносит инфу о факте наличия
языковых параметров. Т.е. да-они есть. В принципе. В PE формате в секции .rsrc)) Да.
НО вот В ДЕТАЛЯХ - у какого элемента и в каком виде ТОЧНО эта инфа должна быть прописана - я вот в этой статье не увидел.
НО! на самом деле еще раз - можно сейчас не говорить о наличии или неналичии этой инфы - вопрос все равно в том, что
в редакторе ресурсов той же VisualStudio я могу и ДОЛЖЕН задавать язык для того или иного ресурса. Это факт. НО! я не могу
тогда найти среди инфы, что выдает ваш плагин: МОЙ выбор про языки - для диалога IDD_ABOUTBOX я выбрал русский.
НО нигде ни слова о русском в выводе плагина про него. Сплошной инглиш типа у этого ресурса... Разве это не нонсенс?

По той же ранее приведенной ссылке https://lief.re/doc/latest/tutorials/07_pe_resource.html - там четко указано, что есть варианты в
выводе этих языков - там и английский и французский вперемешку представлены на картинке. Логично что и среди ресурсов в моем
файле так же должны фигурировать и английский (да, в большинстве случаев), и русский (кое-где, но всё же).
А тут нет ничего... Вот как это выходит?

6) Похоже это явно продолжение 5-го. Смотрите - тот факт, что 0 на русской винде ассоциируется с "ANSI - кириллица", или Windows-1251
ЭТО понятно и приемлемо. Ибо это просто результат конвертации цифры 0 в расширенное текстовое представление об языке и кодостранице,
что будет получаться через WinAPI функцию GetACP.
Вопрос по прежнему - да почему же это 0??? Ведь в редакторе ресурсов явно использовались вот такие связки:
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
и
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

и даже если смотреть числовые константы, то это (https://learn.microsoft.com/en-us/previous-versions/ms776294(v=vs.85)):
LANGUAGE 0x19 0x01
LANGUAGE 0x09 0x01

Нуля нет нигде! Чтобы он появился в редакторе ресурсов надо было использовать конструкцию вида:
LANGUAGE LANG_NEUTRAL SUBLANG_NEUTRAL
но этого же нет! Нет упущенного значения где-либо, чтобы можно было думать, что это замещается по дефолту на 0.

И если взять ваш же, приведённый в пример, файл mediacreationtool.exe - то там вдруг СМОГЛИ возникнуть все языки!
Вот выбираем любой диалог и вуаля! Там перечислены все его вариации в разных языках. НО! в нашей проге, что я
скинул: FontsListing.exe, я точно так же задал этот диалог! Да, он один, да, только в русском. НО он задан же ТОЧНО
ТАКЖЕ как и для ресурсного файла mediacreationtool.exe через:
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
....
#endif // Русский (Россия) resources
/////////////////////////////////////////////////////////////////////////////
Но плагин же упорно показывает только Инглиш как язык...

7) Ок, принимается инфа. Вопрос получается лишь в её считываемости и интерпретируемости, выходит)))
Есть просто подозрение, что наиболее четко и понятно вы прорабатываете теперь именно множественные включения
однотипных ресурсов на разных языках. Вроде того же диалога "О программе/библиотеке" - и если он задан ХОТЯ БЫ
для двух языков - то тогда парсится все чётко и точно. А вот если он задан лишь для одного... То почему-то срабатывает
лишь дефолтность в парсере, т.е. всё сваливается до уровня как будто бы "LANGUAGE LANG_NEUTRAL SUBLANG_NEUTRAL"
задано и ничего более, ИМХО. Хотя это и точно не так.

8 ) Так, тут похоже "Наша битва будет легендарной (С)!"
Quote:
Этот элемент контекстного меню строится динамически и имена подэлементов меню берутся из названий колонок
списочного элемента. "Копировать значение" это выполняемое действие, далее подэлемент меню "Значение" - это заголовок
соответствующей колонки, из которой пользователь будет копировать данные.

и моё:
Quote:
в контекстном меню для элементов этого поля есть пункт "Копировать значение".
НО когда мы зайдем в подпункты этого подменю - мы увидим раздельно "Свойство", раздельно ОПЯТЬ "Значение".
Т.е. как бы масломасляное. Предлагается "Копировать ячейку" выводить как заголовок этого подменю. Потому как
выше вы используете "Копировать строку"

И вот скажите, пожалуйста, а разве я НАСТОЛЬКО в сторону ушел от логики вывода данных в таблице? Подчеркну - в ТАБЛИЦЕ!
Конечно же динамически меню создаётся. Это факт. Но операции применяются к строкам/столбцам/ячейкам используемой таблицы!
И вот одно действие вы используете - "Копировать строку". Из таблицы. А потом вы хотите предложить возможность копирования и
ЭЛЕМЕНТОВ из этой же строки. А что у нас за элементы в строке таблицы? Разве не ячейки? Поэтому название всего-лишь пункта
этого меню "Копировать ячейку" вполне соответствует всем буквам и духам логики инфы, выведенной в этой таблице.
Т.е. мне надо скопировать лишь значение типа, к примеру. Это значение в колонке Значения хранится. Ну разумеется вполне логично
так и написать "Копировать значение". ИЛИ, если мы уже ВОШЛИ в подменю для элемента "Копировать ячейку", просто "Значение".
Точно так же как и у вас выводится просто "Свойство" - это другая ячейка с другой информацией. Мы и её копировать можем. Ячейку!
Разве это так нелогично и неправильно???

9) Насчет языковых констант 0 и 9. Похоже есть: https://learn.microsoft.com/en-us/previous-versions/ms776294(v=vs.85)
Ищем 0x00 и 0x09 и находим соответственно: LANG_NEUTRAL и LANG_ENGLISH в вариации {0x0c09 English (en)}
Может тогда их красивые)) текстовые обозначения рядом так же прописывать? Чтоб не искать мучительно соответствие числа-тексту.

10)11)12) - тут вроде все понятно.

И 13), который повторно расписан как 12)
Если на мой вопрос "Вообще у всех конечных элементов узлов с типами ресурсов откуда их числовые "имена"?" Вы отвечаете, что
это прерогатива Ресурсного компилятора, то... мне кажется мы немного отходим от юзер-френдли показа инфы о ресурсах. ИМХО.
Эту 7 из нашего файла для "String Table" я что - могу разве увидеть в ... блин, даже не знаю куда лезть, чтобы её как 7 увидеть))).
Ведь даже в двоичном представлении в соответствующем разделе .rsrc секции как я понимаю - там совсем не 7 хранится. Верно же?
Да хотя даже если так - неужели мне как человеку - важно видеть это как ?ИМЯ?, которое создается по какому-то внутреннему же
алгоритму? Откуда инфа о "Ресурсный компилятор для STRINGTABLE создает блоки по 16 элементов и автоматически проставляет
блокам индексы/имена. Индексация начинается с 1", кстати?
Может все же практичнее и полезнее псевдоимена что ли указывать?
Ну ли все же именами считать их типы (Имя для "String Table" = 6), а в таблице выводить вместо колонки "ТИП" обычный "ID"=7.


Last edited by Destiny on Mon Dec 30, 2024 21:37; edited 4 times in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group