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 

PE Viewer 3.0
Goto page Previous  1, 2, 3 ... , 11, 12, 13  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
iteg



Joined: 01 Dec 2011
Posts: 95

Post (Separately) Posted: Sat Nov 23, 2024 14:20    Post subject: Reply with quote

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)
Quote:
16 (16 (Version))

Формат вывода типа ресурса - "<оригинальный тип ресурса> (<интерпретируемый тип ресурса> (<текстовое имя интерпретируемого тип ресурса>))".
Во время построения дерева ресурсов плагин анализирует каждый тип ресурса и, если необходимо, задает новый.
Например, типа ресурса 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 индекс блока.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 272

Post (Separately) Posted: 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
Back to top
View user's profile Send private message
iteg



Joined: 01 Dec 2011
Posts: 95

Post (Separately) Posted: Sat Dec 28, 2024 16:43    Post subject: Reply with quote

Destiny
1)
Quote:
1) Хорошо, что в ТУДУ листе.

Для данного списочного компонента заблокировал скроллбар.
2)
Quote:
3) И вот плавно мы перехожим к именам данных, использованных в панельке

Если оригинальный тип ресурса не совпадает с интерпретируемым, то вывожу эти значения через /.
3)
Quote:
4) (01.01.1601 3:00:00) - это дичь какая-то

Согласен, что данное поле не заполняется для современных приложений. Но для старых приложений или специфического назначения имеет значение.
4)
Quote:
5) и 6)

https://learn.microsoft.com/ru-ru/windows/win32/menurc/language-statement
Также, посмотри в файле, например, "C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\winnt.h", в блоках-комментариях (2 блока) перед константами LANG_NEUTRAL и SUBLANG_NEUTRAL.

Тестовый пример:
LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
//LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
//LANGUAGE LANG_RUSSIAN, SUBLANG_SYS_DEFAULT
//LANGUAGE LANG_RUSSIAN, 3
103 DIALOGEX 0, 0, 292, 218, 0
STYLE WS_POPUP | WS_BORDER
EXSTYLE WS_EX_RIGHT | WS_EX_RTLREADING | 0x00400000
CAPTION "Error!"
FONT 8, "MS Shell Dlg", 0
BEGIN
CTEXT "Select One:", 1, 10, 10, 280, 12
PUSHBUTTON "&Retry", 2, 75, 30, 60, 12
PUSHBUTTON "&Abort", 3, 75, 50, 60, 12
PUSHBUTTON "&Ignore", 4, 75, 80, 60, 12
END

- LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
0x0019 (25) (Russian), 0x0000 (0) (ANSI - Cyrillic)
- LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
0x0419 (1049) (Russian (Russia)), 0x0000 (0) (ANSI - Cyrillic)
- LANGUAGE LANG_RUSSIAN, SUBLANG_SYS_DEFAULT
0x0819 (2073) (Russian (Moldova)), 0x0000 (0) (ANSI - Cyrillic)
- LANGUAGE LANG_RUSSIAN, 3
0x0C19 (3097) (Language Neutral), 0x0000 (0) (ANSI - Cyrillic)

Для ресурса DIALOGEX изменяется только значение поля Language, а CodePage остается 0.
5)
Quote:
8 ) Так, тут похоже "Наша битва будет легендарной (С)!"

Изменил локализации на "Копировать ячейку".
6)
Quote:
Насчет языковых констант 0 и 9.

Пометил себе в ToDo.
7)
Quote:
13) Эту 7 из нашего файла для "String Table" я что - могу разве увидеть в

https://learn.microsoft.com/ru-ru/windows/win32/menurc/stringtable-resource
Необходимо обратить внимание на раздел "Комментарии".
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 272

Post (Separately) Posted: Mon Dec 30, 2024 21:51    Post subject: Reply with quote

1)
Quote:
Для данного списочного компонента заблокировал скроллбар.

Вы неверно поняли мой посыл о полосах. НЕ вообще их надо убрать, а позволить этой панели стать передвигаемой
по высоте! Чтобы я САМ мог растянуть ее по высоте так, чтобы полосы прокрутки пропали. САМ! а не принудительно
отключить возможность их использования!

2)
Quote:
Если оригинальный тип ресурса не совпадает с интерпретируемым, то вывожу эти значения через /.

Я это уже увидел - и именно по этому и расписал причину: почему ЛУЧШЕ было бы сделать в табличном представлении,
а не через этот микро-символ.
Получается - Вы просто повторили: ЧТО именно вы делаете. Ну и, разве это ЛУЧШЕ воспринимается??? нежели чем
чёткое таблично-ячеистое представление? К тому же -еще раз- вывод же по сути УЖЕ идет в панельке - в виде таблицы!
Значит просто надо раскрыть её потенциал более ширше))))

3)
Quote:
Согласен, что данное поле не заполняется для современных приложений.

А есть понимание того - КАК можно заполнить это поле сейчас? Если уж раньше как-то заполняли - то значит какие-то
функции API все же использовали? Наверное и сегодня они всё ещё должны бы срабатывать на это? Верно же?
Просто ЧТО это за волшебные команды-то такие, что смогут заполнить эти данные?

4)
Вы даёте отсылку к неким формально-официальным моментам и это понятно. НО))) вроде бы в моем изначальном посте
так же должно было быть четко выражено, что я в курсе этого формализма, но вот плагин показывает НЕ ТО, что надо!
Еще раз, ровно так как вы в тестовом примере и показываете, в нашем RC файле для ресурса Диалог в файле, что мы
вам показали: FontsListing.exe - и БЫЛО задано, что он является русским ресурсом! Именно вот как вы показываете:
Code:
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "О программе FontsListing"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    ICON            IDR_MAINFRAME,IDC_STATIC,14,14,21,20
    LTEXT           "FontsListing, Версия 1.0",IDC_STATIC,42,14,114,8,SS_NOPREFIX
    LTEXT           "(c) 2023",IDC_STATIC,42,26,114,8
    DEFPUSHBUTTON   "ОК",IDOK,113,41,50,14,WS_GROUP
END

Всё же супер? Корректно же, Да? А тогда вопрос - а почему ваш плагин показывает, что это Английский ресурс????
И почему-то, если взять приведённый в пример вами файл mediacreationtool.exe - то там вдруг СМОГЛИ возникнуть
все языки! Заданные ТОЧНО ЖЕ ТАК ЖЕ! в своём RC-файле... Там другие языки есть, плагин их показывает, а вот
в нашем файле их вдруг почему-то уже нет... Только Инглиш((

Ну и тот момент, что CodePage остается 0 = всегда и везде - это получается ошибка современного RC-компилятора?
Или это типа следствие того, на что Вы предлагаете обратить внимание в h-файле?
// DEPRECATED: The Language ID concept is deprecated, please use
// Locale Names instead, eg: "en" instead of a LANGID like 0x09.
// See the documentation for GetLocaleInfoEx.
Вы же про это?
Т.е. получается вообще можно болт забить на то, что плагин готов будет показывать? Ибо эти константы
теперь "ничто" в логике современного API?

7)
Что-то я даже из комментариев по указанной ссылке не понял: а КАК это соотноситься с моим описанием логики того
КАК лучше бы для человека видеть эти имена/ID/ИлиЧтоТамЕщеЭтоМожетБыть?
И опять-таки - это комментарий для ЧЁТКО одного ресурса - STRINGTABLE - а я же про проблему понимания наличия
этих псведоимён/iD пишу для ЛЮБОГО ресурса. Очень странно, что "Именем" вдруг становится некая аморфная "субстанция"
из недр RC-компилятора. Даже если там внутри в бинарном виде "это" реально хранится в секции с "именем" 7, то если взять
для примера лишь только STRINGTABLE чертов, то просто человечку, желающему просто глазками пробежаться по всем
ресурсам и определить наличие нужного ему, сделать что-то понятное с ним, эта "аморфность" пользы не приносит(((
Почему же все же не именами считать их типы (Тогда "Имя" для "String Table" = 6), а в таблице выводить вместо колонки
"ТИП" обычный набор данных: "ID"=7?
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 272

Post (Separately) Posted: Fri Jan 10, 2025 17:47    Post subject: Reply with quote

Собственно увидел лишь сегодня, что релизом стал 17 билд.
Проверил п.1 и да - теперь еще хуже стало с блокировкой полос панельки.
Надо разрешать передвигать за верхнюю планку эту панель по высоте вверх/вниз.
Чтобы пользователь сам выставил желаемую высоту, чтобы в ней умещались все строки с данными.
Сейчас я вижу 3 с четвертью строки. Из обычно же 5/6 ?

Ну и все остальные пункты из поста выше еще в проработке же ответов остаются)))?
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 272

Post (Separately) Posted: Wed Feb 26, 2025 17:18    Post subject: Reply with quote

Поймал сегодня релиз 17.1 - большое спасибо за правку высоты списочного элемента. Теперь видно и читаемо.
Ну и было бы приятно по-человечески, если бы вы еще раз смогли по пп. 4 и 7 - что-то донести до меня)) Это из поста через один выше этого.
Back to top
View user's profile Send private message
iteg



Joined: 01 Dec 2011
Posts: 95

Post (Separately) Posted: Sat Mar 15, 2025 13:34    Post subject: Reply with quote

Destiny
Еще раз спасибо за обратную связь!

В новой версии исправил логическую ошибку отображения наименования кодовой страницы 0. CodePage = 0 обычно означает использование текущей системной кодовой страницы (System Default Code Page). Это та кодовая страница, которая настроена в ОС по умолчанию и используется для программ не поддерживающих Unicode. Как писал ранее, интерпретация будет зависит от установленного значения кодовой страницы по умолчанию в ОС. Полностью на своей ОС получаю название "1251 (ANSI - Cyrillic)". И в предыдущих версия подменял 1251 на значение 0. Сейчас CP 0 соответствует "0x0000 (0) (ANSI - Default)" - обобщенному названию без завязки на настройки ОС.

Quote:
Ну и тот момент, что CodePage остается 0 = всегда и везде - это получается ошибка современного RC-компилятора

По умолчанию 0, но можно явно задать. Например, в папке ТС 11.51 TC7Z64.DLL CP="0x04E4 (1252) (ANSI - Latin I)".

Каждый ресурс описывается структурой _IMAGE_RESOURCE_DATA_ENTRY. См. C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um\winnt.h. Там также есть комментарий. В ней и задано поле CodePage. Плагин отображает значение из данного поля для каждого ресурса.

Quote:
4)

В свое тестовое приложение добавил описание ресурса IDD_ABOUTBOX DIALOGEX с заданием LANG_RUSSIAN и SUBLANG_DEFAULT.
Получил результат на версии 3.17.2.0:
https://ibb.co/N6xmJFj5
Язык и кодовая страница отображаются корректно.

Quote:
7)

Каждый ресурс также описывается структурой _IMAGE_RESOURCE_DIRECTORY_ENTRY, в которой определяется, что ресурс имеет ID или строковое имя.
Ресурс StringTable организован в блоки, каждый из которых содержит до 16 строк. Это такой формат хранения данных, который был определен и им необходимо пользоваться.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 272

Post (Separately) Posted: Wed Mar 19, 2025 17:02    Post subject: Reply with quote

 Вот полный код ресурсов для нашего тестового приложения FontsListing, которое я уже ранее вам отсылал.

ЕСЛИ я всё верно вижу, и вы тоже это видите, то ВСЕ ресурсы, за исключением версионности (она вроде как
представлена в двух языках) заключены под тегом РУССКОГО языка.
Но при просмотре в плагине - даже в последней версии - я вижу что плагин считает, что это не так, что все
ресурсы лишь англоязычные! У кого ошибка и в чем её суть?

С двуязычностью версионности тоже вопрос. Хотя в связи с прошедшем временем может и я сам уже запутался...
Но, имхо, ЕСЛИ эта структура находится именно под тегом ЯЗЫКОВ, то отчего ваш плагин ОБЪЕДИНЯЕТ её в одну
структуру, а не выводит ДВУМЯ разными элементами в дереве ресурсов? Чтобы одна структура была отмечена
одним языком, а другая другим? Ведь языка же всё же два поддерживаются! Если верить нашему файлу RC...
И!
ЕСЛИ взять за основу mediacreationtool.exe файл, то там именно так и сделано - в узле дерева ресурсов Version
находится 37 различных ПОД-элементов, соответствующих разным 37 языкам, разным 37 структурам StringFileInfo!
Ровно то и так, что нами и ожидалось увидеть. Почему для нашего ехе-файла это так же тогда не выводится?
В виде двух под-элементов...

Quote:
По умолчанию 0, но можно явно задать. Например, в папке ТС 11.51 TC7Z64.DLL CP="0x04E4 (1252) (ANSI - Latin I)".

Ещё лишь вопрос на этой почве возникает, к сожалению....
 Вот полный код ресурсника для версионности этого проекта. Рассмотрим для примера лишь этот тип ресурсов.

Как мы видим для него заданы лишь две константы. 0x409, 1200 (или 0x04B0)
ВОПРОС - а откуда плагин смог вытащить и показать тогда значение 0x04E4???
Даже если задать поиск этого значения по всему проекту (вдруг где-то константой вшит странным образом),
то ничего нигде не находится....
Так где и чем в этом проекте 0 был заменен на 0x04E4, который вы показываете?
Исходники тут https://sourceforge.net/projects/sevenzip/files/7-Zip/24.09/7z2409-src.7z/download если что...


Last edited by Destiny on Wed Mar 19, 2025 19:09; edited 4 times in total
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 255
Location: Электросталь

Post (Separately) Posted: Wed Mar 19, 2025 17:29    Post subject: Reply with quote

Destiny wrote:
нет до сих пор поддержки тега Спойлер?

Есть:
Code:
[cut=""][/cut]

Только о нём знают не все ))
_________________
Amo ergo sum
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 272

Post (Separately) Posted: Wed Mar 19, 2025 18:46    Post subject: Reply with quote

yozhik wrote:
Только о нём знают не все ))

Ну и добавить в справку его - дело невообразимой сложности....

А случайно еще зачеркнутый текст не подвезли?
Back to top
View user's profile Send private message
yozhik



Joined: 04 May 2014
Posts: 255
Location: Электросталь

Post (Separately) Posted: Thu Mar 20, 2025 00:55    Post subject: Reply with quote

Quote:
зачеркнутый текст не подвезли?

Тайным знанием об этом я не обладаю. Попытка научного тыка в strike успехом не увенчалась.
_________________
Amo ergo sum
Back to top
View user's profile Send private message
BlackFox



Joined: 18 Dec 2004
Posts: 57
Location: Mayence

Post (Separately) Posted: Thu Mar 20, 2025 16:02    Post subject: Reply with quote

Destiny wrote:
А случайно еще зачеркнутый текст не подвезли?

[ s ][ /s ] (без пробелов) у вас не работает? или вы не о том?
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 272

Post (Separately) Posted: Thu Mar 20, 2025 21:40    Post subject: Reply with quote

Работает?
но вопрос - а кто отвечает за правку и ведение в актуальном состоянии панели тегов редактора постов? Почему ни одного ни второго в ней нет?
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 272

Post (Separately) Posted: Fri Mar 21, 2025 11:56    Post subject: Reply with quote

iteg
Оххх. уже только сейчас - после столького времени просмотра казалось бы одного и того же файла - уже всё увидено и понято.
Но есть еще возможность удивлять.

Опять-таки смотрим полный текст ресурса нашего файла FontsListing, что выше в моем посте представлен, и замечаем,
что второй блок версионности-то был спецом же недооформлен! А ваш плагин его вооооообще не видит!
Есть только тот блок, который под тегом РУССКОГО языка прописан, хоть и отображается он как английский ресурс.
НО и в нем ещё одна ошибка! В ресурсах RC файла же прописано:
VALUE "Translation", 0x409, 1252, 0x419, 1251
Или же в полностью hex варианте:
VALUE "Translation", 0x409, 0x04E4, 0x419, 0x04E3

Соответственно в блоках StringTable это должны были быть пары:
StringTable 0 (0x409, 0x04E4)
StringTable 1 (0x419, 0x04E3)

А что показывает плагин последней версии?
Translation 0: 0x0409, 0x04B0, 0x0419, 0x04B0
и
StringTable 0 (0x0409, 0x04B0)
StringTable 1 (0x0419, 0x04B0)

Откуда 0x04B0 вылезло и где 0x04E4 и 0x04E3 константы???

Так вот подозрение ОТКУДА могло вылезти 0x04B0 у меня теперь и появилось - как раз из
того блока ресурса версии, что спрятан был под тегом АНГЛИЙСКОГО языка.
Именно там было указано, как мы видим из листинга RC-файла, что:
VALUE "Translation", 0x409, 1200
или же
VALUE "Translation", 0x409, 0x04B0

НО это же другой блок!
Второй, отображение которого пока что не появилось в дереве ресурсов файла в плагине(((((
Back to top
View user's profile Send private message
iteg



Joined: 01 Dec 2011
Posts: 95

Post (Separately) Posted: Sat Mar 22, 2025 14:19    Post subject: Reply with quote

Destiny
Создал простой С++ проект в Visual Studio 2022 17.13.4. В файл Resource.h скопировал ваше предоставленное rc-описание приложения FontsListing.
Тестировал на ОС Windows 11 24H2 x64, x64 и x86 плагином версии 3.0.17.2.

1) В итоге получил файл WindowsAppTest.exe (в архиве в папке Release), в котором все ресурсы на русском языке, кроме Manifest и Version (Name,IDR_VERSION2), которые на английском. Что полностью корректно и отражает заданное rc-описание. И не подтверждает ваше первое описание проблемы. Version содержит два ресурса - один на русском и другой на английском.
https://ibb.co/gLDTzN2J
https://ibb.co/wNRJwSCh

2) Скачал 7z2409.exe и в ресурсах Version вижу:
StringTable 0 (0x0409, 0x04B0)
...
Translation 0: 0x0409, 0x04B0
Никакого упоминания 0x04E4 я тоже не нашел.
Также не подтверждает ваше второе описание проблемы.
https://ibb.co/672sDfQp

3) Скомпилированный файл из пункта 1) показывает два ресурса Version и корректно их языки.
Что тоже не подтверждает ваше третье описание проблемы.

Тестовый проект (исходники и WindowsAppTest.exe) с вашим rc-описанием:
https://www.upload.ee/files/17884426/WindowsAppTest.rar.html

В mediacreationtool Version все ресурсы имеют единый и общий идентификатор 1 и разделяются на подуровни на основания номера своего языка.
В вашем rc-описании идентификаторы разные. Если замените идентификатор IDR_VERSION2 на VS_VERSION_INFO, то получите такую же структуру как и в mediacreationtool. Тоже проверил после компиляции приложения.
https://ibb.co/tM6k7pd7

Получается, что мы ведем разговор о разных вещах. Детально всё перепроверьте.

Пришлите:
1) Версию и битность тестовой ОС.
2) Версию и битность TotalCommander.
3) Версию и битность плагина.
4) Исполняемый файл FontsListing и его rc-файл при компиляции.
5) Скриншоты с визуальными отметками проблем или видео.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... , 11, 12, 13  Next
Page 12 of 13

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group