главная программы
resource tuner console
сборник примеров скриптов
Edit Icons: Замена икон в файле иконами из .ICO файла
Этот код демонстрирует использование Resource Tuner Console для замены икон в EXE или DLL файлах.
Скрипт добавляет или заменяет иконки в тестовом EXE-файле на иконки из файлов .ico, расположенных в папке "Src". После завершения изменений обновленный файл сохраняется в папке "Release".
Код демонстрирует следующие изменения иконок в тестовом приложении:
- Замена главной иконки целым набором новых из .ICO-файла, включая 256x256 икону из PNG-файла.
- Сортировка добавленных иконок в правильном порядке.
- Добавление ещё одной иконки в новую созданную Icon Group.
- Вывод отчёта об изменениях в дереве ресурсов в лог-файл
rtc.log
. - Восстановление исходных отметок о времени создания и изменения файла после сохранения.
После обработки тестовый файл DemoApp1.exe
с обновленными иконками будет сохранён в папку "Release". Вы можете просмотреть изменения, внесенные в ресурсы файла, проверив файл rtc.log
.
Скрипт также содержит метод получения исходных отметок времени файла для демонстрационных целей. Он позволяет вам при необходимости восстановить исходные отметки (CreationTime, LastAccess и LastWrite) после выполнения любых файловых операций.
Более подробную информацию см. в Пошаговом руководстве по использованию скриптов, в котором приведены дополнительные сведения об использовании Resource Tuner Console.
Примечание: при копировании кода скрипта, пожалуйста, убедитесь в отсутствии переносов строк внутри команд. Это требование VBScript: каждая команда должна располагаться целиком на одной строке.
Sub Main PEFileProxy.PostDebugString "Пересчёт контрольной суммы в заголовке файла вкл." PEFileProxy.UpdateCheckSum = True PEFileProxy.PostDebugString "Создание резервной копии отключено." PEFileProxy.CreateBackUp = False '----- Получение отметок времени исходного файла (для демонстрациии) ----- 'Чтобы восстановить исходные отметки времени файла после сохранения, нам 'нужно получить эти отметки перед выполнением любых операций с файлом. 'Если этот функционал вам не требуется, эту часть кода можно удалить. SRCFILE = ".\src\DemoApp1.exe" PEFileProxy.PostDebugString "" PEFileProxy.PostDebugString "Получаем CreationTime, LastAccessTime и LastWriteTime для файла '" & SRCFILE & "'..." set fso = CreateObject("Scripting.FileSystemObject") set f = fso.GetFile(SRCFILE) DCR = f.DateCreated DLM = f.DateLastModified DLA = f.DateLastAccessed PEFileProxy.PostDebugString "Created : " & DCR PEFileProxy.PostDebugString "Last Modified: " & DLM PEFileProxy.PostDebugString "Last Accessed: " & DLA PEFileProxy.PostDebugString "" '------------------------------------------------------------------------- 'Открытие файла PEFileProxy.PostDebugString "Открываем файл..." PEFileProxy.OpenFile SRCFILE if (PEFileProxy.Terminated) then 'Предупреждение в случае ошибки PEFileProxy.PostDebugString "При открытии файла произошла ошибка." else PEFileProxy.PostDebugString "Файл открыт успешно." if (not PEFileProxy.HasResources) then PEFileProxy.PostDebugString "Файл не содержит ресурсов." else PEFileProxy.PostDebugString "Файл содержит ресурсы." 'Указываем язык по умолчанию. LangID = 0 ' Default PEFileProxy.PostDebugString "Заменяем/добавляем главную икону приложения..." ResourcesProxy.ChangeIcon "", LangID, CREATE_IF_NOT_EXIST, REPLACE_IF_ITEM_EXISTS_ELSE_ADD, ".\src\vista_iconset.ico" PEFileProxy.PostDebugString "Добавляем иконную группу NewGroup с новой иконой..." ResourcesProxy.ChangeIcon "New Icon Group", LangID, CREATE_IF_NOT_EXIST, REPLACE_IF_ITEM_EXISTS_ELSE_ADD, ".\src\icon_3_32x32_8bit.ico" 'Строим и выводим дерево ресурсов в лог, чтобы показать изменения. PEFileProxy.PostDebugString "" PEFileProxy.PostDebugString "Дерево ресурсов — построено с помощью RTC:" ResourcesProxy.ResourceTreeToLog PEFileProxy.PostDebugString "" 'Сохранение файла PEFileProxy.PostDebugString "Сохраняем изменения в новый файл..." DESTFILE = ".\release\DemoApp1.exe" PEFileProxy.SaveAsNewImage DESTFILE '-------------------------------------------------------------------------- 'Восстанавливаем исходные отметки времени (CreationTime, LastAccess и LastWrite) PEFileProxy.PostDebugString "" PEFileProxy.PostDebugString "Восстанавливаем CreationTime, LastAccessTime и LastWriteTime для файла '" & DESTFILE & "'..." if not ScriptUnit.SetFileTime(DESTFILE, DCR, DLA, DLM) then 'Предупреждение в случае ошибки PEFileProxy.PostDebugString "Восстановить CreationTime, LastAccessTime и LastWriteTime для файла '" & DESTFILE & "' не удалось." else PEFileProxy.PostDebugString "CreationTime, LastAccessTime и LastWriteTime для файла '" & DESTFILE & "' восстановлены успешно." end if PEFileProxy.PostDebugString "" '-------------------------------------------------------------------------- end if PEFileProxy.PostDebugString "Закрываем файл..." PEFileProxy.CloseFile end if end Sub
После выполнения скрипта RTC выводит схему обновлённого дерева ресурсов в лог-файл, чтобы вы смогли проверить сделанные изменения:
Дерево ресурсов — построено с помощью RTC: ------------------------------------------ [Cursor (1)] 1: 32x32 1b, Neutral (0) 2: 32x32 1b, Neutral (0) 3: 32x32 1b, Neutral (0) 4: 32x32 1b, Neutral (0) 5: 32x32 1b, Neutral (0) 6: 32x32 1b, Neutral (0) 7: 32x32 1b, Neutral (0) [Bitmap (2)] BBABORT: Neutral (0) BBALL: Neutral (0) BBCANCEL: Neutral (0) BBCLOSE: Neutral (0) BBHELP: Neutral (0) BBIGNORE: Neutral (0) BBNO: Neutral (0) BBOK: Neutral (0) BBRETRY: Neutral (0) BBYES: Neutral (0) CDROM: Neutral (0) CLOSEDFOLDER: Neutral (0) CURRENTFOLDER: Neutral (0) EXECUTABLE: Neutral (0) FLOPPY: Neutral (0) HARD: Neutral (0) KNOWNFILE: Neutral (0) NETWORK: Neutral (0) OPENFOLDER: Neutral (0) RAM: Neutral (0) UNKNOWNFILE: Neutral (0) XCLR_BMP: German — Switzerland (2055) [Icon (3)] * 1: 32x32 4b, Finnish (1035) 2: 32x32 8b, Finnish (1035) + 3: 16x16 4b, Neutral (0) + 4: 32x32 8b, Neutral (0) + 5: 32x32 4b, Neutral (0) [String (6)] 4080: Neutral (0) 4081: Neutral (0) 4082: Neutral (0) 4083: Neutral (0) 4084: Neutral (0) 4085: Neutral (0) 4086: Neutral (0) 4087: Neutral (0) 4088: Neutral (0) 4089: Neutral (0) 4090: Neutral (0) 4091: Neutral (0) 4092: Neutral (0) 4093: Neutral (0) 4094: Neutral (0) 4095: Neutral (0) 4096: Neutral (0) [RC Data (10)] DVCLAL: Neutral (0) PACKAGEINFO: Neutral (0) TFORM1: Neutral (0) [Cursor Group (12)] 32761: Neutral (0) 32762: Neutral (0) 32763: Neutral (0) 32764: Neutral (0) 32765: Neutral (0) 32766: Neutral (0) 32767: Neutral (0) [Icon Group (14)] * MAINICON: Korean (1042) XCLR_ICON: German — Switzerland (2055) + 1: Neutral (0) [Version (16)] 1: English (US) (1033) --------------------------------------------------------------------- Легенда: [Имя (№пп)] — Тип; "+" — Добавлено; "-" — Удалено; "*" — Изменено |
Чтобы посмотреть и проверить произведённые изменения в самом EXE файле, мы рекомендуем использовать Resource Tuner GUI, визуальный редактор ресурсов.
Примеры скриптов
Установив Resorce Tuner Console на свой компьютер, вы найдёте папку Demo Scripts
в директории с программой. Внутри этой папки находятся 12 папок с примерами скриптов и тестовыми файлами.
Все примеры скриптов готовы к применению. Чтобы запустить выполнение скрипта, выберете соответствующий .BAT файл в любой папке с примером. Resorce Tuner Console произведёт изменения в тестовом EXE файле, находящемся в папке Src
. Результирующий файл будет записан в папку Release
в директории, содержащей скрипт.
Пошаговое руководство по использованию скриптов
Скачать 60-дневную пробную версию Resource Tuner Console