Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нельзя ли передать приложению данные не в виде файла, а потоком


TStas ©   (2006-04-02 23:08:00) 

ПРимер:
PlaySound('CANCEL', HINSTANCE, SND_RESOURCE); //Работающий код, здесь функции передается именно поток взятый из ресурса
А с другими приложениями так нельзя?


Германн   (2006-04-05 01:57:00) [1]


> Leonid Troyanovsky ©   (03.04.06 18:09) [7]
> Забудь про TStream, его не передашь.

Забудь также и про поток. Он тут совершенно ни при чём.
Продолжай читать книгу. Дальше может поймёшь лучше.


Fay   (2006-04-04 20:33:00) [2]

2 TStas ©   (04.04.06 19:32) [8]
В смысле? >8-0


TStas   (2006-04-04 19:32:00) [3]

То есть просто пустой поток объявить, не создаваить его и присвоитьь хендле?


Leonid Troyanovsky   (2006-04-03 18:09:00) [4]


> TStas ©   (03.04.06 12:53) [6]

> вещь. Вот и на STream каким-то, не знаю пока каким, образм
> хендл получить и его вручить приложению


Забудь про TStream, его не передашь.
Можно передать хендл проекции файла: DuplicateHandle + передать
значение хендла в другой процесс, а затем, уже там, MapViewOfFile
и читать оттуда, как из памяти.

Ну, или выдрать из этого экзешника требуемый ресурс (редактором
ресурсов) сохранить его в файл и прицепить его к своему приложению.

--
Regards, LVT.


TStas   (2006-04-03 12:53:00) [5]

Вот читаю книгу по виндам, только начал, но понял, что фактически приложению передается не сам файл, что непонятно что на самом  деле, а ХЕНДЛ на него - сполне внятная для виндов вещь. Вот и на STream каким-то, не знаю пока каким, образм хендл получить и его вручить приложению


Leonid Troyanovsky   (2006-04-03 11:33:00) [6]


> TStas ©   (03.04.06 02:53) [4]

> фишка не проойдет, но с кем-то и как-то можно передать поток.
>  Из ресурса он загрузился, но ресурс-то в экзешнике был,
>  разве он не поток TResourceStream?


Нет, конечно. Ресурс имеет свой формат, а TResourceStream -
это дельфийский объект, позволяющий обращаться с ним как
с потоком.

Для того, чтобы можно было воспользоваться ресурсом чужого
экзешника, нужно загрузить его себе LoadLibraryEx, ну, а,
потом попытаться использовать его хендл вместо Hinsatance.

Многие вещи, как, скажем, LoadBitmap не проходят.
Тогда можно попробывать вытащить ресурс в TMemoryStream,
а далее - SND_MEMORY.

Другие варианты передачи требуемого подразумевают
кооперацию этих приложений, например, IPC.

--
Regards, LVT.


TStas   (2006-04-03 02:53:00) [7]

Я понимаю, что приложения по-разному с файлами обращаются. Например WSCript запросто  сделает харакири: он ОДИН раз рабрал весь код, а потом его выполняет. Ясно, что МП4 такая фишка не проойдет, но с кем-то и как-то можно передать поток. Из ресурса он загрузился, но ресурс-то в экзешнике был, разве он не поток TResourceStream?


Германн   (2006-04-03 01:29:00) [8]


> TStas ©   (02.04.06 23:08)  
>
> ПРимер:
> PlaySound('CANCEL', HINSTANCE, SND_RESOURCE); //Работающий
> код, здесь функции передается именно поток взятый из ресурса
> А с другими приложениями так нельзя?
>

Тут данные для функции берутьсяиз ресурса.

А вот сабжу этот пример никак не соответствует. Даже если приложение умеет выполнять [2].


Leonid Troyanovsky   (2006-04-02 23:40:00) [9]


> TStas ©   (02.04.06 23:08)  

> А с другими приложениями так нельзя?


Можно, если они загрузят оный ресурс, скажем, LoadLibraryEx.
Ну, или, наверное, сделают [1] из проекции файла, доступной
в другом приложении.

--
Regards, LVT.


Eraser   (2006-04-02 23:13:00) [10]


> TStas ©   (02.04.06 23:08)

SND_MEMORY


Наверх

Титульная страница Поиск, карта сайта Написать письмо