Збереження та вилучення ресурсів з dll і exe

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

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

  • Заголовок
  • заголовок для нашого RCDATA ресурсу
  • власне дані - RCDATA ресурс

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

Тема ресурсу виглядає наступним чином:

Поля помічені зірочкою Ми не будемо використовувати.

Наведений код створює файл ресурсів і копіює його в дане зображення:

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

Витяг ресурсів з EXE

тепер розглянемо приклад, який показує, як витягувати ресурси з виконуваного модуля.

Вся процедура полягає в створенні потоку ресурсу, створення файлового потоку і копіюванні з потоку ресурсу в потік файлу.

Все, що потрібно, це отримати Instanceexe -шніка або dll (у Вашого застосування це Application.Instance або Application.Handle. Для dll Вам доведеться отримати його самостійно :)

ResID той же самий ID. який був присвоєний ресурсу ResType. WAVEFILE, BITMAP, CURSOR, CUSTOM це типи ресурсів, з якими можливо працювати

FileName це ім'я файлу, який ми хочемо створити з ресурсу