![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проиграть видео из Dll. [D7, WinXP]
parasolka © (2007-05-23 11:03:00)Здравствуйте, уважаемые мастера. Проблема такая - есть dll, из которой необходимо вызвать форму, на которой будет проигрываться видео файл avi. Для этого использую TMediaPlayer. Код вызова формы - такой:
procedure ShowForm (AHandle: THandle; Filename: String);
begin
Application.Handle:=AHandle;
frmVideo:=TfrmVideo.Create(Application);
with frmVideo.MPlayer do begin
FileName:=Filename;
Display:=frmVideo;
Open;
end;
frmVideo.Show;
end;
Плейер запускаю по событию OnShow формы. Однако, форма открывается, но видео не проигрывается. В чем проблема?
parasolka (2007-05-23 11:57:00) [1]Я и имел в виду BCB.
Уже заработало.
Сергей М. (2007-05-23 11:55:00) [2]
> как я потом ее прилинкую
Прилинковать можно все что угодно к чему угодно, но работать этоткод в описанных условиях (хост-приложение не является Delphi/BCB-приложением) не будет.
Сергей М. (2007-05-23 11:53:00) [3]
> AnsiString что, не подходит?
Откуда в C++ взялся AnsiString ? Этот тип известен лишь Делфи и BCB.
> До С еще не дошло
И не дойдет при таком подходе.
> В Delphi не работает. Спрашиваю - ПОЧЕМУ?
Потому что см. [9]
parasolka (2007-05-23 11:49:00) [4]
> Ну и как эта программа, по-твоему, должна умудриться передать
> в кач-ве 2-го параметра данные типа String ?
AnsiString что, не подходит?
И повторяю еще раз. До С еще не дошло. В Delphi не работает. Спрашиваю - ПОЧЕМУ? Зачем рассуждать на тему того как я потом ее прилинкую.
Сергей М. (2007-05-23 11:45:00) [5]
> другая программа не моя. Она вообще на C++ написана
Ну и как эта программа, по-твоему, должна умудриться передать в кач-ве 2-го параметра данные типа String ?
clickmaker (2007-05-23 11:45:00) [6]
> Используемое устройство MCI не поддерживает
ну и причем тут тогда формы и DLL?
parasolka (2007-05-23 11:44:00) [7]Дело в том, что до подключения к C еще не дошло. Вызываю из тестовой программки на Delphi. Кстати, посмотрел свойство ErrorMessage компонента MediaPlayer после вызова метода Play - "Используемое устройство MCI не поддерживает указанную команду".
clickmaker (2007-05-23 11:39:00) [8]скорей всего, проблема в обработке сообщений (вернее, в их "необработке").
Тогда из программы на Си нужно в простое (в конце цикла GetMessage - DispatchMessage) дергать некий метод в DLL или слать сообщение, например WM_IDLE, форме в DLL.
А в обработчике этого сообщения вызывать Application.HandleMessage;
parasolka (2007-05-23 11:36:00) [9]
> А зачем? Что, нет более прямолинейных способов?
Уже переделал. Запускаю в той же процедуре сразу после Open. Эффект тот же.
Reindeer Moss Eater (2007-05-23 11:36:00) [10]Вот пусть и пользуется функциями а не событиями кого-то там
parasolka (2007-05-23 11:35:00) [11]Потому что другая программа не моя. Она вообще на C++ написана. Моя задача дать dll автору той программы, чтобы он ее прилинковал и пользовался ее функциями.
Reindeer Moss Eater (2007-05-23 11:34:00) [12]Плейер запускаю по событию OnShow формы
А зачем? Что, нет более прямолинейных способов?
Сергей М. (2007-05-23 11:30:00) [13]
> Потому что ее надо встраивать в другую программу
Что мешает подключить к проектам "этой программы" и "другой программы" один и тот же юнит с упомянутой формой ?
Почему dll, а не bpl ?
parasolka (2007-05-23 11:18:00) [14]Потому что ее надо встраивать в другую программу, из которой можно будет потом вызвать эту форму и проиграть на ней видео. Скажем так - техническое задание.
Сергей М. (2007-05-23 11:15:00) [15]Зачем вообщеты хранишь форму в dll ?
Объясни вразумительно, с аргументами ..