|
.::
Редакторы интерфейса ::.
|
Автор: Андрей
Дунский
Существует огромное количество программ для редактирования
текстов, графики, видео и аудио, есть множество инструментов
для программирования. А есть ли инструментарий для простого
редактирования интерфейса программ без их декомпиляции?
Да, такие программы есть. Это eXeScope и Passolo, LingoWare
Editor и Visual Localize, Symantec Resource Studio и Borland
Resource WorkShop и, конечно же, Restorator -- очень популярный
инструмент для изменения интерфейса любой 32-разрядной программы
для Windows.
Restorator
Предлагаю начать «знакомство с внутренним миром программ»
именно с Restorator’a, хотя бы потому, что на официальном
сайте (www.bome.com/Restorator) имеется русская shareware
версия (срок использования ограничен 30 днями) с переведенными
подсказками и помощью.
Итак, используя Restorator можно:
· просмотреть или извлечь ресурсы (меню, диалоги,
тексты, иконки, курсоры, звуки, анимацию, рисунки и другие
принадлежащие приложению данные, которые программист включил
в программу) и по необходимости отредактировать или заменить
их;
· перевести практически любую программу;
· изменить «горячие» клавиши программы;
· создать patch (заплата), который внесет ваши изменения
в исходный файл.
Пожалуй, именно благодаря модулю ResPatcher Restorator
стал столь популярен на 1/6 части суши, а в Рунете появилось
множество русификаторов для разных программ и даже целые
сайты, посвященные этой теме (например, rusoft.by.ru, ранее
rus.agava.ru). Такие patches малы по размеру и не требуют
для работы установленного Restorator’а, т. е. их можно использовать
на любом другом компьютере.
Разминка на «кошечках»
Для разминки я решил «пройтись» этой программой по
всеми любимому Проводнику.
Рабочая область Restorator состоит из трёх частей
(рис. 1).
Слева -- Resource Tree, в котором открытый файл отображается
в виде дерева ресурсов. Справа, вверху -- Resourсe Viewer
-- отображает выбранный в Resource Tree ресурс. Внизу под
Resource Viewer -- браузер файлов, для навигации по диску
и открытия файлов в Resource Tree простым перетаскиванием
(drag-and-drop).
Итак, загрузив explorer.exe из папки Windows в Resourсe
Tree, я увидел «полный джентльменский набор» ресурсов. Это
и «Bitmap» -- точечный рисунок, который можно извлечь в
bmp или jpg файл, и «AVI» -- видео, извлекаемое в одноименный
формат, и «Menu» -- в данном случае это выпадающее меню
«Пуск».
«Dialog» -- диалоговые окна, «String» -- текстовые
сообщения (например, сообщения об ошибках). «Accelerators»
-- список зарегистрированных этой программой горячих клавиш.
«Icon» и «Cursor» -- перечень иконок и курсоров, хранящихся
в этой программе (обратите внимание, что Restorator позволяет
изменять цвет фона). «RCData» -- ресурс, характерный для
программ на Delphi, содержащий всю информацию об окне. «Version»
-- информация о версии и авторские права на рассматриваемый
файл («во избежание недоразумений» автор Restorator’a запрещает
изменять эту информацию, но eXeScope, который можно скачать
с http://hp.vector.co.jp/authors/VA003525/Eindex.htm,
лишён этих ограничений).
Внимание! Опасность!
Те, кому надоело видеть каждый день одно и то же
стартовое меню Windows, но как и автору статьи жаль ресурсов
компьютера на Windowblinds и нервов на LiteStep и Aston,
могут с помощью Restorator’а отвести душу. Переходим в режим
правки и изменяем, все что заблагорассудится (не забывая
про окошко предварительного просмотра и главное -- про создание
резервных копий файлов).
Никогда не изменяйте идентификаторы, служащие ссылкой
для программы! В ресурсах на подобии String и Accelerators
идентификаторы задаются перед отображаемым текстом или горячей
клавишей (например, ‘524, «Рабочий стол»’ и ‘416: «Ctrl+Z»’).
В Dialog и Menu номер, которым элемент идентифицируется
программой, расположен после текста элемента (AUTOCHECKBOX
‘&Расположить поверх всех окон‘, 1101, 14, 130, 130,
10, BS_NOTIFY и MENUITEM ‘&Отменить‘, 416). Значок «&»
обозначает, что буква, следующая после него, является горячей
клавишей.
После правки меню «Пуск» у меня теперь выглядит так
(рис. 2).
Открыв раздел String, я выбрал «37» в появившимся
списке (в дальнейшем для краткости -- String, 37) и поменял
название кнопки «Пуск» (заметьте, что в отличие от программ
вроде WinHacker и WinBoost, Restorator не ограничивает вашу
фантазию пятью символами), остальные названия главного меню
можно изменить в Menu, 204.
При попытке перезаписи explorer.exe, как и всякого
файла, используемого в данный момент системой, Restorator
предлагает воспользоваться инструментом «Операции с файлом
при следующем пуске Windows».
В роли целевого файла должен выступать файл, в данный
момент используемый системой, а в роли исходного отредактированный
вами файл, который при следующем запуске Windows заменит
целевой.
Выбрав необходимые файлы (см. рис. 3), нажимаю
«Добавить вход». После выхода Restorator создаст в директории
Windows файл wininit.ini, содержащий строки следующего вида:
[rename]
C:\WINDOWZ\EXPLORER.EXE=C:\WINDOWZ\EXPLOR~1.EXE
С заменой флажка Windows на «жовто-блакитний» было
немного сложнее, потому что хранится он в файле user.exe,
который по своей структуре 16-разрядный и Restorator’ом
не открывается. Поэтому я запустил менее привередливый eXeScope
и импортировал вместо логотипа Windows (Icon, 105, 16x16)
свою иконку 16 на 16 пикселей.
Обратите внимание, что eXeScope имеет визуальный
редактор диалогов, поэтому диалоговые окна проще изменять
именно в eXeScope.
Приступим
После «косметических украшательств» я решил изменить
что-нибудь более существенное. Например, окно свойств панели
задач.
Так как это окно диалоговое, редактировал я его с
помощью eXeScope.
Снова открываю explorer.exe, раскрываю ветку Resource,
раздел Dialog и выбираю ресурс под номером 6. Этот диалог
состоит из 9 операторов: 5 Static и 4 AutoCheckBox. Сначала
я поэкспериментировал с кнопками AutCheckBox. Например,
если на вашем компьютере кто-то постоянно включает Автоматически
убирать с экрана для панели задач, а вам это не нравится,
то выбрав соответствующий AutoCheckBox, можно поставить
галочку напротив «Disabled» и отключить эту возможность.
Хорошо, нижнюю часть диалогового окна изменил, а
что же делать с верхней? Туда можно поместить какую-нибудь
картинку. Но какой точечный рисунок из раздела Bitmap заменять
и что делать со строками Static?
Для того чтобы увидеть границы областей Static я
запустил Dialog Editor. Далее, для того чтобы посмотреть,
что происходит с этими пятью областями при щелчках по кнопкам
AutoCheckBox, захожу в настройки панели задач. При выборе
того или иного параметра панели задач на постоянную картинку
(ресурс Bitmap, 149 все в том же explorer.exe) накладываются
другие картинки, иллюстрирующие результат ваших действий.
Выбираю подходящую картинку и назначаю её вместо
Bitmap, 149 (eXeScope работает с рисунками не больше, чем
256 Кб, Restorator таких ограничений не имеет, но внедрять
в explorer.exe мегабайтные картинки я не рекомендую). При
необходимости можно подкорректировать в Dialog Editor положение
первой области Static, чтобы отцентрировать рисунок относительно
главного диалогового окна. Размеры рисунка лучше заранее
«подогнать» к размерам окна, в которое этот рисунок будет
вставлен, иначе границы диалогового окна скроют часть рисунка.
Теперь удаляю preview при настройке панели задач,
который закрывает мою картинку. Для этого, открыв explorer.exe
в Restorator’e (так как eXeSxope не позволяет добавлять
или удалять нужные строки в диалоговых ресурсах, точнее
позволяет, но менять придется в шестнадцатеричных кодах),
удаляю Static2-5, оставив оператор CONTROL ‘‘, 1111, ‘STATIC‘,
SS_BITMAP|SS_SUNKEN|WS_CLIPSIBLINGS, 14, 14, 183, 82. (Вместо
этих последних четырёх чисел у вас могут быть другие в зависимости
от того, перемещали ли вы область, задаваемую Static1).
После перечисленных ранее действий диалоговое окно
свойств панели задач у меня теперь выглядит следующим образом
(рис. 4).
Правда explorer.exe после внедрения в него этой фотографии
вместо 180 Кб стал занимать 310 Кб, но красота, как говориться,
требует жертв 7.
Десерт
Говоря об изменениях интерфейса Windows, не могу
не упомянуть два «интересных» файла, хранящиеся в \%windir%\system\,
а именно kernel32.dll и shell32.dll.
Начну с kernel32.dll. Первый ресурс в окне Dialog
-- окно «Программа выполнила недопустимую операцию…». Текст,
пожалуй, самой «любимой» ошибки расположен в разделе String,
7 (см. рис. 5). Второй ресурс -- диалог, вызываемый
троицей Ctrl+Alt+Del.
Теперь о shell32.dll -- в нём хранятся практически
все сообщения, диалоги и анимация, используемые в Windows.
Так я добавил в диалоговый ресурс 1013 (окно подтверждения
удаления группы файлов) один элемент PUSHBUTTON (рис.
6), не забыв при этом сдвинуть остальные кнопки, чтобы
варианты ответа не превышали заданной длины диалогового
окна.
Так я помог начинающему пользователю (женского пола
7) с выбором
правильного варианта ответа на подобный вопрос.
Поделись с другом
Если вы от души «поизменяв» программу и придя в восторг
от собственной фантазии желаете порадовать и своих друзей
вашим UCA (user-styled custom application, стилизованное
пользователем приложение), то, чтобы не передавать полный
измененный файл, сделайте patch при помощи модуля ResPatcher.
Открываем необходимый файл -- измененные ресурсы
Restorator помечает синей стрелкой. В меню «Инструменты»
выбираем «Создать ResPatcher…» (если пункт недоступен, значит
у вас незарегистрированная версия), проверяем имя оригинального
файла, выбираем место сохранения и название для нашего модуля
ResPatcher, заполняем наши координаты (адрес e-mail, страница
в интернете, номер ICQ), при желании вводим инструкцию по
установке и всё -- patch готов! ResPatcher не обращает внимания
на размер изменяемой программы, ориентируясь только на наличие
необходимых ресурсов.
При желании ознакомиться с ресурсами типа «RCData»
нужно найти программу написанную на Delphi, но автор Restorator’а
предупреждает, что «слишком большие изменения приведут к
неработоспособности программы после ее сохранения».
Справедливости ради следует заметить, что не всё
так просто при редактировании программ. Так при работе с
Restorator’ом могут возникнуть ситуации, из-за которых изменение
программы невозможно.
Если в окне просмотра выбранного ресурса возникает
надпись «ресурс поврежден», это значит, что файл чем-то
упакован, и для редактирования данных его надо распаковать.
Например, с помощью UnASPack.
Если появляется сообщение «Текст превышает объем
мемо», значит размер данного ресурса больше 64 Кб и его
редактирование не по силам Restorator’у. В этом случае опять
же может выручить eXeScope.
И главное, не забывайте перед началом «экспериментов»
создавать резервные копии исходных файлов! Иначе «подопытная»
программа может вовсе перестать работать.
Внимание!
Автор статьи и редакция журнала «Компьютеры+Программы»
не несут никакой ответственности за неумелое использование
программ, описанных в статье.
Андрей Дунский,
dunskiy@ukr.net
|