C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Работа с ресурсами
DVD
  Отправлено: 24.05.2003, 16:46


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Как загрузить из ресурса что-либо и сохранить это что-либо на диск. Скажем, если это не картинка, а exe файл или еще что?
Admin
Отправлено: 24.05.2003, 17:19


Владимир

Группа: Администратор
Сообщений: 1190



Ответ был в старом форуме здесь.

Повторим:

Создаем в текстовом редакторе (например "Блокноте") текстовый файл
в который пишем Имя ресурса | Тип ресурса | Имя программы, то есть, например:

myEXESource EXEFILE ntp.exe

сохраняем этот файл с расширением .rc и присоеденяем к нашему проекту
(Project->Add To Project и указываем имя нашего .rc файла)

Далее, в программе извлекаем из ресурса, сохраняем на диске, запускаем

CODE

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    char *Resu = "EXEFILE";
    TResourceStream* Res = new TResourceStream((int)HInstance, "myEXESource", Resu);
    Res->SaveToFile("cmp.exe");  // сохраняем на диск
    delete Res;
   // а можем и запустить
    ShellExecute(Handle,"open","cmp.exe",NULL,NULL,SW_SHOWNORMAL);
}

DVD
  Отправлено: 25.05.2003, 07:05


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Понятно, а как то же самое сделать функциями WinApi?
Dr.Phoenix
Отправлено: 26.05.2003, 14:27


Дежурный стрелочник

Группа: Участник
Сообщений: 48



а нафига писать что-то в блокноте, если можно в Project->resources кликнуть правой кнопкой, выбрть New->User Data, и билдер сам засунет файло в ресурс без блокнота.

и еще: а если это ехе, то можно ли его запустить из проги не записывая на диск?

Отредактировано Dr.Phoenix — 26 May 2003, 14:30
DVD
  Отправлено: 01.06.2003, 12:33


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Есть у кого-нибудь пример, как загрузить из ресурса диалог с одной кнопкой, при нажатии на которую диалог бы закрывался? Можно, чтобы он был основным окном приложения.

Вернуться в Вопросы программирования в C++Builder