# wcres.wcx

## Огородов И.М. iogorodov@mail.ru

### 1. Введение

wcres.wcx позволяет просматривать, модифицировать и удалять ресурсы в PE32 файла (*.exe, *.dll, и т.д.). Каждый ресурс можут быть представлен как в двоичном формате (как в файле), так и в преобразованом к более привычному виду (изображение в формате BMP, файл ресурса (*.rc) и т.д.).

Возможность модификации и удаления ресурсов доступна только под Windows NT/2000/XP.

### 2. Установка

wcres.wcx выполнен в виде дополнительного модуля к Windows Commander/Total Commander, поэтому его установка заключается в простом связывании с одим или несколькими типами файлов. При использовании с Windows Commander существуют некоторые нюансы:
- просто связать с расширение "exe" вы не можете, так как после этого запуск программы из Windows Commander будет затруднен (а оно вам надо ?);
- файлы PE32 могут иметь различные расширения, порой самые немыслимые;
- а Ctrl+PgDn не работает с подклчаемыми упаковщиками (как например в FAR). В Total Commander появилась эта возможность, поэтому все что написано выше уже не актуально.
В виду всего этого мой совет: свяжите с каким-нибудь одним расширением (например "pe") и переименовывайте или копируйте файлы.

### 3. В Работе

Каждый ресурс представлен одним файлом. Полный путь (относитьльно корня PE32 файла) содержит информацию о типе ресурса, его языке и его имени: Resource_Type\Resource_Language\Resource_Name. Если используется преобразование и данный ресурс может быть преобразован, то к имени будет добавлено соответствующее расширение. При упаковке наличие расширения показыват на необходимость обратного преобразования и если преобразование удалось, расширение не будет использоваться. Из последней фразы следует:
- для модификации ресурса вы можете использовать двоичный формат, но при этом имя файла должно строго соответствовать имени ресура;
- если при обратном преобразовании произошла ошибка ресурс будет записан в непреобразованном варианте (в этом случаее возможно наличие двух ресурсов с "одинаковым" именем: первое имя из старого ресурса + расширение от преобразования, второе имя: то что было запакованно (расширение - постольку поскольку)).

Для отключения преобразования используется SCROLL LOCK. При включенном SCROLL LOCK преобразование не выполняется.

Предопределенные типы представлены в следующем формате .RT_*. В привиденной ниже таблице указано какие типы могут быть преобразованы и какие расширения при этом будут даны:

Тип | Расширение | Описание
--- | --- | ---
RT_CURSOR | CUR | Курсоры 1
RT_BITMAP | BMP | Изображения
RT_ICON | ICO | Иконки 1
RT_MENU | RC | Стандартный скрипт ресурсов 2
RT_DIALOG | RC | Стандартный скрипт ресурсов 2
RT_STRING | RC | Стандартный скрипт ресурсов 2
RT_RCDATA | DFM | Из всех возможных ресурсов только для форм Borland 3
RT_GROUP_CURSOR | HTM | Краткая информация о ресурсе 4
RT_ICON_CURSOR | HTM | Краткая информация о ресурсе 4

Замечание: Windows Commnder, судя по всему, использует кэширование для содержания архива, из-за чего могут возникнуть проблемы при включении/выключении преобразования (имена файлов будут взяты из кэша, а таких файлов уже не будет).

Замечание: При удаленни всех ресурсов данного типа невозможно "подняться" на уровень выше.

### 4. Лицензия

Эта программа является свободно распростроняеммой при соблюдении следующих условий:
- она не может использоваться для модификации программ, если это запрещено соответствующими лицензионными соглашениями
- программа поставляется "как-есть", автор не несет ответственности за убытки полученные в результате использования этой программы

### 5. История

Версия 1.0.1.1

[+] Для корректной работы с формами от Delphi 6.0 и C++ Builder 6.0, плагин был перекомпилированн под Delphi 6.0 (глядишь как-нибудь руки и до 7.0 дойдут)

Версия 1.0.1.0

[+] Добавлены функции для работы с Total Commander, чтобы можно было получать доступ к ресурсам по Ctrl+PgDn

Версия 1.0.0.109

[+] Первый работающий выпуск

1 Будте аккуратны с изменением курсоров и иконок, информация по ним храниться в RT_GROUP_CURSOR и RT_GROUP_ICON соответственно. При изменении курсора или иконки обновляется только ресурс из RT_CURSOR или RT_ICON их описания не изменяются. Другими словами новый курсор или иконка должны иметь такие же параметры, что и старая (ширина, высота, количество цветов).

2 В принципе скрипты ресурсов вы можете изменять в любом соответсвующем редакторе, но некоторые из них используют константы (данная версия абсолютно не умеет с ними работать), поэтому существует вероятность, что обратно положить модифицированный ресурс не удасться.

3 При компиляции был использован Delphi 6, поэтому при работе с формами от Delphi 7 могут быть проблемы.

4 Этот HTML дан только для ознакомления, если вы хотите модифицировать ресурс, то необходимо использовать двоичный формат.