Как создать файл rc

Обновлено: 04.07.2024

Такой вот совет пришел ко мне с рассылкой "Ежедневная рассылка сайта Мастера DELPHI", думаю многим будет интересно.

Решить эту задачу нам поможет функция function ExtractIcon(hInstance, filename, iconindex):integer где hinstance - глобальная переменная приложения, ее изменять не надо. Тип integer.

filename - имя программы или DLL из которой надо извлекать иконки. Тип pchar. iconindex - порядковый номер иконки в файле (начинается с 0). В одном файле может находится несколько иконок. Тип integer.

Функция находится в модуле ShellApi, так что не забудьте подключить его в uses. Если эта функция возвратит ноль, значит иконок в файле нет.

Данная функция возвращает handle иконки, поэтому применять ее нужно так: Image1.Picture.Icon.Handle:=ExtractIcon(hInstance, pchar(paramstr(0)), 0);

данное объявление нарисует в Image'e картинку вашего приложения.

Автор: Михаил Христосенко

Как загрузить BMP файл из DLL?

procedure TForm1.Button1Click(Sender: TObject);

AModule := LoadLibrary( 'Images.dll' );

Работа с ресурсами

Сохранить файл в ресурсе программы на этапе компилляции можно выполнив следующие шаги:

1) Поставить себе RxLib

2) Появится в меню "Project" дополнительный пункт меню "Resources"

3) Открой его , создай новый ресурс "User Data", в него загрузи нужный файл, измени имя ресурса на что-нибудь типа 'MyResName'.

Теперь при компилляции проэкта в exe файл будет прикомпиллирован ваш файл в виде ресурса. Извлечь его на этапе выполнения можно следующим образом:

Сохранение и выдёргивание ресурсов в DLL или EXE?

Иногда возникает необходимость вшить ресурсы в исполняемый файл Вашего приложения (например чтобы предотвратить их случайное удаление пользователем, либо, чтобы защитить их от изменений). Данный пример показывает как вшить любой файл как ресурс в EXE-шнике.

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

+ заголовок для нашего RCDATA ресурса

+ собственно данные - RCDATA ресурс

Таблицы строк

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

1) Строки, хранимые в ресурсах, не занимают память до тех пор, пока они не будут загружены вашим приложением.

2) Stringtables легко редактировать, создавая таким образом локализованные (переведенные) версии вашего приложения.

Таблицы строк компилируются в ".res"-файл, который включается в exe-файл приложения во время сборки. Даже после того, как вы распространите ваше приложение, таблицы строк, содержащиеся в вашем приложении могут редактироваться редактором ресурсов. Моим любимым редактором ресурсов является Borland Resource Workshop, поставляемый в комплекте с Delphi. Он позволяет в режиме WYSIWYG редактировать как 16-, так и 32-битные ресурсы, как автономные, так и имплантированные в exe или dll-файлы. Тем более это удобно, если учесть что вместе со всеми версиями Delphi поставляется компилятор

ресурсов из командной строки (Borland Resource Command Line Compiler) (BRCC.EXE и BRCC32.EXE), расположенный в Delphi-директории Bin.

Как поместить JPEG-картинку в exe-файл и потом загрузить ее?

1)Создайте текстовый файл с расширением ".rc".Имя этого файла должно отличаться

от имени файла - пректа или любого модуля проекта.

Файл должен содержать строку вроде: MYJPEG JPEG C: \DownLoad\MY.JPG

"MYJPEG" имя ресурса

"JPEG" пользовательский тип ресурса

"C: \DownLoad\MY.JPG" руть к JPEG файлу.

Пусть например rc - файл называется "foo.rc"

Запустите BRCC32.exe(Borland Resource CommandLine Compiler) - программа находится

в каталоге Bin Delphi / C + +Builder'а - передав ей в качестве параметра полный путь

Вы можете создать ресурсы для проекта, выполнив следующие действия.

Использование файла скрипта ресурсов.

Этот шаг необходим перед добавлением ресурсов.

Добавление ресурсов в проект и использование представление ресурсов.

Использование шаблона ресурса для создания настраиваемых ресурсов.

Использование файлов скриптов ресурсов

Перед созданием и добавлением новых ресурсов в проект необходимо сначала создать файл скрипта ресурсов (RC).

файл скрипта ресурсов можно добавить только в существующий проект, загруженный в Visual Studio IDE. Нельзя создать автономный скрипт ресурсов за пределами проекта, хотя файлы шаблона ресурсов (RCT) можно создавать в любое время.

Создание файла описания ресурсов

Установите фокус на существующую папку проекта в Обозреватель решений, например MyProject.

Не путайте папку проекта с папкой решения в Обозреватель решений. Если поместить фокус на папку решения , то вы не сможете добавлять новые элементы .

в меню выберите Project > добавить новый элемент.

Выберите папку Visual C++ и выберите файл ресурсов (. RC) в правой области.

Укажите имя файла скрипта ресурсов в текстовом поле имя и нажмите кнопку Открыть.

Открытие файла скрипта ресурсов

Вы можете просматривать ресурсы в файле скрипта ресурсов, не открывая проект. Файл скрипта откроется в окне документа, а не в представление ресурсов.

Некоторые команды доступны только в том случае, если файл открыт автономно, то есть вне проекта без предварительной загрузки проекта. Например, чтобы использовать команду Сохранить как и сохранить файл с другим форматом или именем файла, файл должен быть открыт автономно.

Чтобы открыть файл скрипта ресурсов за пределами проекта, в меню последовательно выберите пункты > Открыть файл и файл. Перейдите к файлу описания ресурсов, выделите его и нажмите кнопку Открыть.

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

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

Чтобы открыть несколько сценариев ресурсов, выполните описанные выше действия для каждого открываемого файла, например Source1. RC и source2. RC. Затем, когда оба RC-файла открыты в отдельных окнах документов, либо используйте меню окно , либо щелкните правой кнопкой мыши один из файлов и выберите пункт Новая группа горизонтальных вкладок или Новая группа вертикальных вкладок. Теперь окна выводятся мозаикой, чтобы их можно было просматривать одновременно.

Чтобы открыть файлы скриптов ресурсов, щелкните RC-файл правой кнопкой мыши в Обозреватель решений, выберите команду Открыть с помощью и выберите Редактор исходного кода (текстовый).

при создании приложения Microsoft Foundation Class (MFC) для Windows с помощью мастера приложений MFCмастер создает базовый набор файлов, включая файл скрипта ресурсов (rc), который содержит основные функции MFC. однако эти функции, относящиеся к mfc, недоступны при редактировании rc-файла для Windows приложений, не основанных на MFC. к ним относятся мастера кода, строки команд меню, содержимое списка для элементов управления "поле со списком" и размещение элемента управления ActiveX.

Чтобы добавить поддержку MFC с открытым файлом скрипта ресурсов, в представление ресурсов выделите папку Resources (например, MFC. RC). Затем в окно свойствзадайте для режима MFC значение true.

Кроме установки режима MFC, RC-файл должен быть частью проекта MFC. Установка режима MFC в значение true для RC-файла в проекте Win32 не предоставляет возможности MFC.

Создание ресурсов

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

Используйте окно представление ресурсов для просмотра файлов ресурсов, включаемых в проекты. При раскрытии верхней папки, например проект1. RC, отображаются типы ресурсов в этом файле. Разверните каждый тип ресурса, чтобы отобразить отдельные ресурсы этого типа.

чтобы открыть окно представление ресурсов , перейдите в меню вид > другие Windows > представление ресурсов или нажмите клавиши Ctrl + Shift + E.

Можно также щелкнуть правой кнопкой мыши окно представление ресурсов , чтобы открыть контекстное меню команд, или дважды щелкнуть строку заголовка, чтобы закрепить и открепить окно. Щелкните правой кнопкой мыши строку заголовка команд, управляющих поведением окна. дополнительные сведения см. в разделе управление Windows.

представление ресурсов windows включает диалоговое окно добавление ресурса со следующими свойствами для добавления ресурсов в проект приложения Windows классическое приложение с + +:

Можно развернуть категории ресурсов курсора и диалогового окна, чтобы открыть дополнительные ресурсы, расположенные в . \ Microsoft Visual Studio <version> \вк\вкресаурцетемплатес \<LCID > \мфк.ркт. Если необходимо добавить RCT Files, поместите их сюда или укажите другой путь включения. Ресурсы, отображаемые на верхнем уровне элемента управления "дерево", являются ресурсами по умолчанию, предоставляемыми Visual Studio. Ресурсы в RCT – файлах отображаются на втором уровне в соответствующей категории. Число файлов RCT, которые можно добавить, не ограничено.

При создании нового ресурса Visual C++ присваивает ему уникальное имя, например IDD_Dialog1 . Этот идентификатор ресурса можно настроить, изменив свойства ресурса либо в соответствующем редакторе ресурсов, либо в окно свойств.

Не указывайте имя или идентификатор ресурса, зарезервированного Visual Studio. Зарезервированные имена — DESIGNINFO , HWB и TEXTINCLUDE , а зарезервированный идентификатор — 255 .

Создание ресурса

В представление ресурсов выберите RC-файл, а затем используйте команду изменить > Добавление ресурса и выберите тип ресурса для добавления в проект.

Можно также щелкнуть правой кнопкой мыши RC-файл в представление ресурсов и выбрать в контекстном меню пункт Добавить ресурс .

В Обозреватель решений щелкните правой кнопкой мыши папку проекта, выберите Добавить > Добавить ресурс и выберите тип ресурса для добавления в проект.

Если у вас еще нет RC-файла в проекте, этот шаг создаст его. Затем можно повторить этот шаг, чтобы добавить конкретные типы ресурсов в новый RC-файл.

В представление классовщелкните правой кнопкой мыши класс, выберите Добавить > Добавить ресурс и выберите тип ресурса для добавления в проект.

используйте меню Project > добавить ресурс.

Использование шаблонов ресурсов

Шаблон ресурса — это настраиваемый ресурс, сохраненный в виде RCT-файла. Затем шаблон ресурсов служит отправной точкой для создания ресурсов. Шаблоны ресурсов сохраняют время в разработке дополнительных ресурсов или групп ресурсов, совместно использующих функции, такие как стандартные элементы управления или повторяющиеся элементы. Например, если вы хотите включить кнопку "Справка" с значком логотипа компании в несколько диалоговых окон, создайте новый шаблон диалогового окна и настройте его с помощью кнопки "Справка" и логотипа.

После настройки шаблона ресурса сохраните изменения в папке шаблона или в расположении, указанном в пути включения, чтобы новый шаблон ресурса отображался под типом ресурса в диалоговом окне Добавление ресурса . Теперь можно использовать новый шаблон ресурсов при необходимости.

Редактор ресурсов автоматически предоставляет уникальный идентификатор ресурса. При необходимости можно изменить свойства ресурсов .

Разместите зависящие от языка файлы шаблонов в подкаталогах основного каталога шаблонов. Например, файлы шаблонов только для английского языка переходят в папку.. \<каталог шаблонов ресурсов > \ 1033.

Visual Studio ищет новые rct-файлы в \program files \ Microsoft Visual Studio <version> \вк\вкресаурцетемплатес, \program files \ Microsoft Visual Studio <version> \вк\вкресаурцетемплатес \<> LCID (например, lcid 1033 для английского языка) или в любом месте пути включения. Если вы предпочитаете хранить RCT – файлы в другом расположении, необходимо добавить расположение в путь поиска включаемых файлов.

Создание и использование шаблона ресурса

В Обозреватель решений щелкните правой кнопкой мыши проект и выберите Добавить > Добавить новый элемент.

В области шаблоны: выберите файл шаблона ресурсов (. RCT).

Укажите имя и расположение для нового RCT -файла и нажмите кнопку Открыть.

Новый RCT -файл добавляется в проект и отображается в Обозреватель решений в папке ресурсов .

Дважды щелкните RCT -файл, чтобы открыть его в окне документа. Чтобы добавить ресурсы, щелкните правой кнопкой мыши файл в окне документа и выберите команду Добавить ресурс.

Вы можете настроить добавленные ресурсы и сохранить RCT – файл.

В области представление ресурсов щелкните правой кнопкой мыши RC -файл и выберите команду Добавить ресурс.

Щелкните знак «плюс» ( + ) рядом с ресурсом, чтобы развернуть узел ресурса и просмотреть доступные шаблоны для этого ресурса.

Дважды щелкните шаблон, который нужно использовать.

Добавленный ресурс можно изменить по мере необходимости в редакторе ресурсов.

Преобразование существующего файла ресурсов в шаблон

Откройте файл скрипта ресурсов и в меню выберите файл > Сохранить <filename> как. Укажите расположение и нажмите кнопку ОК.

Хранение ресурсов (WAV, MP3, . ) внутри EXE

Игры и другие типы приложений, которые используют мультимедиа (типа звуков, анимации) должны включать дополнительные файлы мультимедиа вместе с приложением или включать файлы внутрь исполнимого файла.

Вы можете добавлять данные в Ваше приложение как ресурс, а затем извлекать эти данные, когда это необходимо. Эта методика более желательна, так как это может предохранить другие файлы от изменения их и предохранения.

В этой статье будет рассмотрено, как включать звуковые файлы, видео, анимацию и другие двоичные файлы в исполнимый файл Delphi.

Файлы ресурсов (.RES)

Включение нескольких двоичных файлов в исполнимый состоит из 5 шагов:

  • Составьте и/или соберите все файлы, которые необходимо включить в EXE
  • Создайте файл сценария ресурсов .RC, который описывает все ресурсы, исользуемые Вашим приложением
  • Скомпилируйте файл сценария ресурсов .RC, чтобы создать файл ресурсов .RES
  • Свяжите скомпилированный файл ресурсов с исполнимым файлом
  • Используйте индивидуальные элементы ресурсов

Первый шаг очень прост: просто решите какие файлы Вы хотите хранить в исполнимом. Например, мы будем хранить две .WAV песни, одну .AVI видео и одну .MP3 песню.

Прежде, чем продолжить, есть несколько важных заявлений относительно ограничений при работе с ресурсами:

а) Загрузка и выгрузка ресурсов на время выполнения операции. Ресурсы - часть исполнимого файла приложения и загружается во время выполнения приложения.

б) Вся свободная память может использоваться при загрузке/выгрузке ресурсов. Другими словами, нет никаких пределов в количестве ресурсов, загруженных одновременно.

в) Конечно, файл ресурсов увеличивает размер исполнимого. Если Вы хотите уменьшить размер исполнимого файла, рассмотрите размещение ресурсов и части Вашего проекта в DLL и пакетах.

Теперь давайте посмотрим, как создать файл, который описывает ресурсы.

Создание файла сценария ресурсов (.RC)

Файл сценария ресурсов - это простой текстовый файл с расширением .RC, который перечисляет ресурсы. Файл сценария имеет следующий формат:

ResName определяет или уникальное имя или целое число (ID), который обозначает ресурс.

ResType описывает тип ресурса

ResFileName - полный путь и имя файла, который будет включен в ресурс.

Для создания нового файла сценания ресурсов проделайте следующее:

  • Создайте новый текстовый файл в каталоге проектов
  • Переименуйте его в MyRes.rc

В MyRes.rc записано следующее:

Файл сценария просто определяет ресурсы. В данном формате MyRes.rc перечисляет два WAV файла, один AVI и одну песню в MP3 формате. Все инструкции в .RC файле связывают имя ресурса, тип и имя файла для данного ресурса. Есть около дюжины предопределенных типов ресурсов. Они включают иконки, точечные рисунки, курсоры, анимацию и т.д. RCDATA определяет пользовательский тип данных. RCDATA позволяет включать любой ресурс данных для приложения. Пользовательские ресурсы данных разрешают включение двоичных данных непосредственно в исполняемом файле. Например, заявление RCDATA выше называет двоичный ресурс приложения Intro и определяет файл, который содержит песню в MP3 формате.

Примечание: удостоверьтесь, что у Вас имеются все ресурсы, перечисленные в Вашем файле .RC. Если файлы внутри каталога проектов, то Вы не должны включать полный путь к файлам.

Создание файла ресурсов (.RES)

Чтобы использовать ресурсы, определенные в файле сценария ресурсов, мы должны скомпилировать его в .RES файл при помощи Borland Resource Compiler. Компилятор ресурсов создает новый файл, основанный на содержании файла сценария ресурсов. Этот файл имеет обычно расширение .RES. Компоновщик Delphi позже будет повторно форматировать .RES файл в файл объекта ресурсов, а затем связывать его с исполнимым файлом приложения.

Bopland Resource Compiler находится в каталоге Delphi/Bin. Имя - BRCC32.exe. Просто введите в командной строке brcc32.exe и нажмите Enter. Компилятор запустится и отобразит справку использования (без параметров в командной строке).

Подготовьте файл MyRes.rc и выполните команду (в каталоге проектов):

По умолчанию, при компилировании ресурсов, BRCC32.exe называет скомпилированный файл с расширением .RES с именем .RC файла и помещает его в тот же каталог, что и .RC.

Подключение файла ресурсов к исполнимому файлу

Мы создали файл ресурсов. В следующем шаге мы должны добавить следующую директиву компилятора в модуле нашего проекта сразу после директивы формы (ниже ключевого слова implementation).

Случайно не удалите , так как эта строка кода сообщает Delphi о подключении визуальной части формы. Когда Вы выбираете точечные рисунки для компонентов SpeedButton, Image или Button, Delphi включает растровый файл, который Вы выбрали как часть ресурса формы.

После того, как .RES файл будет связан с исполняемым файлом, приложение может загружать его ресурсы во время выполнения, когда это будет необходимо. Чтобы фактически использовать ресурс, Вы должны будете сделать несколько вызовов API.

Нам нужен будет новый проект с пустой формой. Добавьте директиву в модуль главной формы. Как уже было сказано выше, мы будем иметь дело с функциями Windows API.

Например, метод LoadFromResourceName объекта TBitmap. Этот метод извлекает указанный растровый ресурс и назначает его объекту TBitmap. Это аналогично вызову функции LoadBitmap в Windows API. Как всегда, Delphi улучшил вызов функции API, чтобы удовлетворить наши потребности лучше.

Проигрывание анимации из ресурсов

Чтобы показать анимацию cool.avi (который был определен в нашем файле ресурсов), мы будем использовать компонент TAnimate из палитры компонентов Win32, который нужно поместить на главную форму. Оставьте его имя по умолчанию - Animate1. Мы будем использовать событие OnCreate формы, чтобы отобразить анимацию:

Все просто! Как мы можем видеть, чтобы запустить анимацию из ресурсов, мы должны использовать свойства ResHandle, ResName или ResID компонента TAnimate. После установки ResHandle, мы устанавливаем свойство ResName, чтобы определить какой ресурс является видеоклипом AVI, который должен будет отображен управлением TAnimate. Установка свойства Active в True просто запускает анимацию.

Проигрывание WAV

Так как мы включили два файла WAV в наше приложение, теперь посмотрим как извлечь звук из файла и запустить его. Поместите кнопку Button1 на форму и напишите следующий код в обработчик события OnClick:

Этот подход использует несколько вызовов API для загрузки ресурса типа WAV по имени MailBeep и запустить его. Обратите внимание: Вы можете использовать Delphi, чтобы запустить предопределенные системой звуки.

Проигрывание MP3

Единственный файл MP3 имеет имя Intro. Так как ресурс имеет тип RCDATA, мы будем использовать другую методику, чтобы извлеч и запустить MP3 песню. TMediaPlayer может запустить MP3 файл.

Теперь добавьте компонент TMediaPlayer на форму (MediaPlayer1) и добавьте TButton (Button2). Событие OnClick должно быть таким:

Этот код при помощи TResourceStream извлекает MP3 из exe и сохраняет его в рабочем каталоге приложения. Имя файла MP3 - Intro.mp3. Затем просто назначьте его свойству FileName компонента TMediaPlayer и воспроизведите песню.

Но, присутствует одна небольшая проблема - приложение создает файл MP3 на машине пользователя. Вы можете добавить код, чтобы удалить этот файл перед закрытием прилоожения.

Ресурс - это любой файл который может находится внутри исполняемого файла (.ехе), его можно извлекать в память программы и работать с ним, а можно и вовсе извлечь его на диск (например чтобы предотвратить их случайное удаление пользователем, либо, чтобы защитить их от изменений). Данная статья показывает как вшить любой файл как ресурс в EXE-шнике.

Далее рассмотрим, как создать файл ресурсов, содержащий копию какого-либо файла. После создания такого файла его можно легко прицепить к Вашему проекту директивой .

Файлом ресурсов будет вот эта картинка:

Итак для того чтобы создать ресурс нам нужен текстовый файл с указаниями для компилятора ресурсов. Создадим папку и положим туда картинку и там создадим текстовый файл вот с таким содержимым:

IMAGE BITMAP logo.bmp

Теперь поясним что эта запись значит:

Первое слово - имя ресурса, второе - тип ресурса, третье - путь к файлу. Т.е. синтаксис будет таким: [Имя] [Тип] [Путь].

После редактирования сохраним наш файл по названием Res.rc, далее положим в эту же папку сам компилятор ресурсор, он лежит в папке Delphi\bin\brcc32.exe, и просто перетаскиваем файл Res.rc на brcc32.exe. После это должен появится файл Res.RES, это и есть наш готовый ресурс, хранящий в себе картинку. Если этого не произошло то можно обойтись другим способом:

Создать ТХТ-файл, написать в него: brcc32.exe Res.rc, переименовать файл в 1.bat и запустить его, должно сработать.

Все ресурс создан, теперь его надо подключить в наш EXE-шник. Делается это так:

После ключевого слова implementation пишется строка это говорит компилятору Delphi о том что надо включить в ехе-файл наш ресурс, его необходимо положить вместе с файлом проекта. После компиляции он больше не нужен.

Далее выташим на форму компонент Image и кнопку, на ней обработчик события OnClick: Компилируем и вот:

Загруженная картинка

Все работает, но только для файлов .bmp, о том как работать с другими файлами в следуйшем уроке.

Читайте также: