Іноді виникає необхідність вшити ресурси в виконуваний файл Вашого застосування (наприклад щоб запобігти їх випадковому видаленню користувачем, або, щоб захистити їх від змін). Даний приклад показує як вшити будь-який файл як ресурс в EXE-шника.
Далі розглянемо, як створити файл ресурсів, що містить корію будь-якого файлу. Після створення такого файлу його можна легко причепити до Вашого проекту директиви. Файл ресурсів, який ми будемо створювати має такий вигляд:
- Заголовок
- заголовок для нашого RCDATA ресурсу
- власне дані - RCDATA ресурс
В даному прикладі буде показано, як зберегти в файлі ресурсів тільки один файл, але думаю, що так само легко Ви зможете зберегти і кілька файлів.
Тема ресурсу виглядає наступним чином:
Поля помічені зірочкою Ми не будемо використовувати. Наведений код створює файл ресурсів і копіює його в дане зображення:
Даний код не зовсім гарний, і відсутня обробка помилок. Правильніше буде створити клас, що включає в себе даний приклад.
Витяг ресурсів з EXE
Тепер розглянемо приклад, який показує, як витягувати ресурси з виконуваного модуля. Вся процедура полягає в створенні потоку ресурсу, створення файлового потоку і копіюванні з потоку ресурсу в потік файлу.
Все, що потрібно, це отримати Instance exe-шника або dll (у Вашого застосування це Application.Instance або Application.Handle, для dll Вам доведеться отримати його самостійно :)
- ResID - той же самий ID. який був присвоєний ресурсу
- ResType: WAVEFILE, BITMAP, CURSOR, CUSTOM - це типи ресурсів, з якими можливо працювати, але у мене вийшло успішно виконати процедуру тільки з CUSTOM
- FileName - це ім'я файлу, який ми хочемо створити з ресурсу