Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Обитатель форума
201 / 184 / 54
Регистрация: 28.10.2012
Сообщений: 543

Динамическое добавление новых ресурсов в DLL

19.05.2017, 10:54. Показов 610. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Помогите решить задачу. Необходимо в процессе работы подгружать DLL содержащую только ресурсы и добавлять/удалять их.
Цель: создать DLL, хранящую профили пользователей. При запуске программы подгружаем список профилей и авторизуемся.

Как обновить существующий профиль - проблем не возникает. А вот как его создать?

Вот то, что накидал. Из документации MSDN:
HTML5
1
2
3
4
5
6
lpName [in]
    Type: LPCTSTR
 
    The name of the resource to be updated. 
    Alternatively, rather than a pointer, this parameter can be MAKEINTRESOURCE(ID), where ID is a resource ID. 
    When creating a new resource do not use a string that begins with a '#' character for this parameter.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void Config::CreateNewResource(String sResourceName, AnsiString data)
{
    if (m_hDataLib)
    {
        if (!FreeLibrary(m_hDataLib))
        {
            Form1->ThrowMessageBox("Не удалось закрыть ресурс.", MB_OK | MB_ICONERROR);
            return;
        }
    }
 
    HANDLE hUpdateRes = BeginUpdateResource(TEXT("ConfigData.dll"), FALSE);
    if (hUpdateRes == NULL)
    {
        Form1->ThrowMessageBox("Не удалось открыть ресурс для записи.", MB_OK | MB_ICONERROR);
        return;
    }
 
    BOOL bResult = UpdateResource(hUpdateRes, RT_RCDATA, sResourceName.w_str(), 0, (void*)data.c_str(), data.Length());
    if (bResult == FALSE)
    {
        Form1->ThrowMessageBox("Не удалось обновить ресурс для записи.", MB_OK | MB_ICONERROR);
        return;
    }
 
    if (!EndUpdateResource(hUpdateRes, FALSE))
    {
        Form1->ThrowMessageBox("Не удалось записать ресурс.", MB_OK | MB_ICONERROR);
        return;
    }
 
    Initialize();
}
Добавлено через 8 часов 56 минут
Господа, все прекрасно работает. Именно с помощью этого кода и происходит динамическое добавление. В ресурсах проекта нового ресурса, конечно же, нет, поскольку нет пути к файлу.
А при получении списка ресурсов DLL новые ресурсы в нем фигурируют. При загрузки новых ресурсов все работает.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.05.2017, 10:54
Ответы с готовыми решениями:

Как использовать динамическое выделение памяти для новых массивов фиксированного размера?
как использовать динамическое выделение памяти для новых массивов фиксированного размера?

Загрузка ресурсов с dll
Подскажите пожалуйста как загружать BITMAP

Изменение ресурсов в файле .exe .dll
Не знаю есть ли кто ни будь понимающий, но задам вопрос. Потратил много времени на поиск информации, наиболее понятное что смог найти //...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.05.2017, 10:54
Помогаю со студенческими работами здесь

DLL, динамическое подключение
Пишу прогу используя winapi. Нужно из DLL загрузить динамически функцию, которая в переданный указатель записывает строку. Вроде все...

Динамическое подключение DLL
Здравствуйте! Обращаюсь за помощью к знающим людям! Объясните пожалуйста как динамически подключить dll с помощью LoadLibrary() и...

Добавление ListView и Button в диалог через редактор ресурсов
Всем доброго времени суток. Собственно сабж, возможно ли добавить ListView и Button в диалог через визуальный редактор ресурсов в Visual...

Динамическое добавление новых объектов
Есть кнопка, при нажатии на которую, должна создаваться рядом ещё одна кнопка с применяемым действием. Вот как это выглядит: <Border...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru