• Добро пожаловать на WYLEK.ru. Пожалуйста, войдите или зарегистрируйтесь.
 
112 гостей, 1 пользователь

Stardock SkinStudio 8.0.0.1

Автор Teodorrrro , 13 января 2014, 15:35:00

« предыдущая - следующая »

Teodorrrro Автор темы

Тема создана 13 января 2014, 15:35:00 Последнее редактирование: 31 июля 2018, 13:09:54 от WYLEK
Для работы SkinStudio 8 необходима WindowBlinds 8.
Сайт: http://www.stardock.com/products/windowblinds/index.asp
На боковых панелях программы не удалось убрать кракозябры, за текст в них отвечают Sections.ini и SubSections.ini (причём в главном окне надписи из этого файла отображаются нормально). В файлах менял кодировки - не помогло.

Скриншот:


За материалами - в личку.

Leserg

Ответ #1 : 13 января 2014, 16:35:00 #1
Да там, как по мне, "темный лес с бабами ягами"! Насколько мне со своей колокольни удалось выяснить, намудрили с преобразованием кодировок ANSI->UTF8. Короче к каждому символу строки прибавляется нулевой байт. Для нижней половины таблицы ASCII (0-127) - нет проблем, а тех символов, что выше (127-255), получается бред. Возможно я ошибаюсь, т.к. еще неуверенно себя чувствую в поиске и устранению проблем с кодировками.
Кто ищет, тот всегда найдет!

Nexus

Ответ #2 : 13 января 2014, 17:35:00 #2 Последнее редактирование: 31 июля 2018, 13:11:04 от WYLEK
teodorrrro, отдаю файл, в котром решена проблема только с боковыми панелями слева, то есть, там, где считываются строки с различных INI файлов. К сожалению, я не могу решить ТЕХНИЧЕСКИ проблему со строками, которые располагаются справа и выделены синим цветом. Дело в том, что они переводятся в Юникод(а потом и в крякозябли) на системном уровне в нулевом кольце, куда отладчику доступ запрещен, только через WinHex можно наблюдать как портятся строки в памяти. Поэтому нету никакой возможности как либо повлиять на перекодировку этих строк. Даже через редактор ресурсов(Ресторатор) нельзя поменять этим строкам никакие свойства. Есть, конечно, теоретическая возможность поменять громаднейший фрагмент кода программы, чтобы правильно формировалось окно с этими стоками, но это уже будет мазохизм, а не решение проблем с крякозяблями

Извините, вам запрещён просмотр содержимого спойлеров.


Leserg, просто добавил в конец файла небольшой фрагмент кода-перекодировщика:

PUSH EAX
PUSH EDX
PUSH ECX
ADD EAX,EAX
ADD EAX,6
PUSH EAX
PUSH EDX
PUSH -1
PUSH EDI
PUSH 0
PUSH 4E3
CALL DWORD PTR DS:[<KERNEL32.MultiByteToWideChar>]
POP ECX
POP EDX
POP EAX
JMP 004681D4

На скрине это будет выглядеть так:
Извините, вам запрещён просмотр содержимого спойлеров.


Чтобы эта процедура была задействована нужно поменять это:
Извините, вам запрещён просмотр содержимого спойлеров.


на это:
Извините, вам запрещён просмотр содержимого спойлеров.

Leserg

Ответ #3 : 13 января 2014, 18:35:00 #3
Nexus, спасибо! Будет теперь чем заняться на досуге. Я так понимаю, что эту функцию можно использовать везде, где встречаются проблемные места с кодировками. Единственный момент, так это правильно определить место внедрения.
Кто ищет, тот всегда найдет!

Teodorrrro Автор темы

Ответ #4 : 13 января 2014, 19:35:00 #4 Последнее редактирование: 31 июля 2018, 13:11:47 от WYLEK
Благодарю за проделанное исследование!

Цитата: Nexusнельзя поменять этим строкам никакие свойства

Кстати, в Радиаликсе при смене ANSI_CHARSET на RUSSIAN_CHARSET для элементов окна с этими злополучными элементами ничего не происходит.
Извините, вам запрещён просмотр содержимого спойлеров.

Nexus

Ответ #5 : 13 января 2014, 20:35:00 #5
Блин, вот это я облажался! Две недели смотрел не в ту сторону программы, поэтому и не мог найти причину. Теперь вот нашел место возникновения крякозябли и за 5 минут исправил. Сколько времени потрачено впустую...
 Вот английский пропатченый файл:

RGhost

 Надеюсь, что на этом вопрос возможно будет закрыт

 аталог@MAIL.RU - каталог ресурсов интернет Яндекс.Метрика