Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - [решено] Как "вшить" картинку в .ЕХЕ ?

Ответить
Настройки темы
Win32 API - [решено] Как "вшить" картинку в .ЕХЕ ?

Новый участник


Сообщения: 28
Благодарности: 3

Профиль | Отправить PM | Цитировать


Мне нужно написать приложение при запуске которого создавалось(по указанному в исходнике пути) изображение (формата .gif). Должен быть ТОЛЬКО .exe файл. Мое изображение должно каким-то образом "вшито" в екзешник.

Пробовал копаться с ресурсами:

Код: Выделить весь код
hRsrc = FindResource(hInstance, "myGif", RT_RCDATA);
hGlb = LoadResource(hInstance,hRsrc);
LockResource(hGlb);
... в итоге получил какой-то глобальный указатель в операт.памяти на мою картинку. Очень хорошо, а вот как теперь эту картинку скопировать, например в "C:/Program Files/myprog/images/".

Также нашел функцию: BOOL WINAPI CopyFile(...), но похоже она тоже не может мне помочь (((.

Пишу на С++ в Visual Studio 2005.

Прошу подтолкнуть в нужном направлении

Спасибо.

Отправлено: 01:18, 15-03-2011

 

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


ferona по глобальному указателю нужно определить размер ресурса и записать данные на диск.
Что-то вроде такого
Код: Выделить весь код
    bool bSuccess = false;
//...
    BYTE *lpbArray = (BYTE*)LockResource(hGlob);
    if (!lpbArray)
        return bSuccess;

    DWORD dwFileSize = SizeofResource(NULL, hRes);
    if (!dwFileSize)
        return bSuccess;

    HANDLE hFile = CreateFile(ResName, GENERIC_WRITE, 0, NULL, 
                CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_ARCHIVE, NULL);
    
    if (hFile != INVALID_HANDLE_VALUE)
    {
        DWORD dwDummy;
        if (WriteFile(hFile, lpbArray, dwFileSize, &dwDummy, NULL))
            bSuccess = true;
        CloseHandle(hFile);
    }
    
    FreeResource(hGlob);
    return bSuccess;
В ResName полный путь к файлу который нужно записать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:56, 15-03-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 28
Благодарности: 3

Профиль | Отправить PM | Цитировать


Огромное спасибо! ))) , программу дописал благодаря вашему ответу. Проблема решена.

-------
подпись


Отправлено: 09:43, 15-03-2011 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - [решено] Как "вшить" картинку в .ЕХЕ ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как управлять "Начинать с экрана приветствия" или "Защита паролем" в св-вах заставки. Alex Konovalov Microsoft Windows 2000/XP 12 17-05-2016 19:27
Sharepoint - [решено] SharePoint подскажите как убрать кнопки "Мне нравиться" и "Тэги и заметки" из верхней HarrySmith Другие серверные продукты 4 08-10-2014 16:38
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? verdix Microsoft Windows 2000/XP 3 03-10-2009 23:46
VBS/WSH/JS - [решено] Как добавить "сложное" значение в "бинарный" параметр реестра с помощью WSH 13Demon Скриптовые языки администрирования Windows 1 10-02-2009 09:47
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход