Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 11.04.2011, 20:45   #1
alexandersson
Новичок
 
Регистрация: 11.04.2011
Сообщений: 1
Репутация: 10
По умолчанию Открытие файла, предварительно загруженного в файл ресурсов Win32 приложения

добрый день уважаемые программисты!

у меня такая задача:

имеем:
— Win32 приложение на c++(vc++2008 Express);
— произвольный файл любого типа(.exe, .avi и т.д.(ресурсы, определяемые программистом)), загруженный в файл ресурсов(.rc);
— во время выполнения приложения мы из файла ресурсов получаем указатель на первый байт искомого файла
с помощью функций FindResource(), LoadResource(), LockResource();

задача:
— хороший вариант — открыть файл(или запустить на выполнение) прямо из файла ресурсов;
— не хороший, но вариант — создать на винте файл с нужным расширением и скопировать в него блок данных из файла ресурсов;

мысли вслух:
— возможно ли присвоить строковое имя неименованному блоку данных(мы имеем указатель на первый байт этих данных)?
тогда можно было бы просто открыть файл прямо из файла ресурсов с помощью ShellExecute();
— может быть есть какая-нибудь функция типа ShellExecute(), но принимающая в качестве параметра не строковый адресс файла,
а его фактический адрес в памяти?
— скопировать файл на диск у меня тоже не получилось, т.к. файловому потоку(ifstream) тоже нужен строковый адрес файла,
а копировать по байтам, так я не знаю ни точного размера, ни значения последнего байта;

кто что может посоветовать?
заранее благодарен.
alexandersson вне форума   Ответить с цитированием
Старый 16.04.2011, 21:54   #2
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,994
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

Цитата:
— возможно ли присвоить строковое имя неименованному блоку данных(мы имеем указатель на первый байт этих данных)?
тогда можно было бы просто открыть файл прямо из файла ресурсов с помощью ShellExecute();
exe еще более менее реально, но советую забыть, оно того не стоит.
Цитата:
— может быть есть какая-нибудь функция типа ShellExecute(), но принимающая в качестве параметра не строковый адресс файла,
а его фактический адрес в памяти?
нет, адрес относится только к вашему процессу.
Цитата:
— скопировать файл на диск у меня тоже не получилось, т.к. файловому потоку(ifstream) тоже нужен строковый адрес файла,
а копировать по байтам, так я не знаю ни точного размера, ни значения последнего байта;
1)используйте АПИ CreateFile для открытия файл
2)открывайте ресурс(как вы знаете)
3)используя SizeofResource получаем размер ресурса.
4)далее мы знаем адрес первого байта и размер ресурса.
в итоге за один вызов WriteFile мы сохраняем ресурс в файл.
5)CloseHandle для закрытия файла
6)как запустить сами знаете.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка текстового файла из ресурсов SolovejK Общие вопросы Delphi 1 22.05.2010 20:18
Редактирование файла ресурсов Alex2009 Общие вопросы Delphi 4 02.07.2009 01:10
файл ресурсов Rozalinda Общие вопросы Delphi 3 20.10.2008 20:31
Файл ресурсов Stanislav Общие вопросы Delphi 11 21.11.2007 09:27


10:15.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.