Форум: "Основная";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
ВнизПроиграть видео из Dll. Найти похожие ветки
← →
parasolka © (2007-05-23 11:03) [0]Здравствуйте, уважаемые мастера. Проблема такая - есть 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 формы. Однако, форма открывается, но видео не проигрывается. В чем проблема?
← →
Сергей М. © (2007-05-23 11:15) [1]Зачем вообще ты хранишь форму в dll ?
Объясни вразумительно, с аргументами ..
← →
parasolka © (2007-05-23 11:18) [2]Потому что ее надо встраивать в другую программу, из которой можно будет потом вызвать эту форму и проиграть на ней видео. Скажем так - техническое задание.
← →
Сергей М. © (2007-05-23 11:30) [3]
> Потому что ее надо встраивать в другую программу
Что мешает подключить к проектам "этой программы" и "другой программы" один и тот же юнит с упомянутой формой ?
Почему dll, а не bpl ?
← →
Reindeer Moss Eater © (2007-05-23 11:34) [4]Плейер запускаю по событию OnShow формы
А зачем? Что, нет более прямолинейных способов?
← →
parasolka © (2007-05-23 11:35) [5]Потому что другая программа не моя. Она вообще на C++ написана. Моя задача дать dll автору той программы, чтобы он ее прилинковал и пользовался ее функциями.
← →
parasolka © (2007-05-23 11:36) [6]
> А зачем? Что, нет более прямолинейных способов?
Уже переделал. Запускаю в той же процедуре сразу после Open. Эффект тот же.
← →
Reindeer Moss Eater © (2007-05-23 11:36) [7]Вот пусть и пользуется функциями а не событиями кого-то там
← →
clickmaker © (2007-05-23 11:39) [8]скорей всего, проблема в обработке сообщений (вернее, в их "необработке").
Тогда из программы на Си нужно в простое (в конце цикла GetMessage - DispatchMessage) дергать некий метод в DLL или слать сообщение, например WM_IDLE, форме в DLL.
А в обработчике этого сообщения вызывать Application.HandleMessage;
← →
parasolka © (2007-05-23 11:44) [9]Дело в том, что до подключения к C еще не дошло. Вызываю из тестовой программки на Delphi. Кстати, посмотрел свойство ErrorMessage компонента MediaPlayer после вызова метода Play - "Используемое устройство MCI не поддерживает указанную команду".
← →
Сергей М. © (2007-05-23 11:45) [10]
> другая программа не моя. Она вообще на C++ написана
Ну и как эта программа, по-твоему, должна умудриться передать в кач-ве 2-го параметра данные типа String ?
← →
clickmaker © (2007-05-23 11:45) [11]
> Используемое устройство MCI не поддерживает
ну и причем тут тогда формы и DLL?
← →
parasolka © (2007-05-23 11:49) [12]
> Ну и как эта программа, по-твоему, должна умудриться передать
> в кач-ве 2-го параметра данные типа String ?
AnsiString что, не подходит?
И повторяю еще раз. До С еще не дошло. В Delphi не работает. Спрашиваю - ПОЧЕМУ? Зачем рассуждать на тему того как я потом ее прилинкую.
← →
Сергей М. © (2007-05-23 11:53) [13]
> AnsiString что, не подходит?
Откуда в C++ взялся AnsiString ? Этот тип известен лишь Делфи и BCB.
> До С еще не дошло
И не дойдет при таком подходе.
> В Delphi не работает. Спрашиваю - ПОЧЕМУ?
Потому что см. [9]
← →
Сергей М. © (2007-05-23 11:55) [14]
> как я потом ее прилинкую
Прилинковать можно все что угодно к чему угодно, но работать этот код в описанных условиях (хост-приложение не является Delphi/BCB-приложением) не будет.
← →
parasolka © (2007-05-23 11:57) [15]Я и имел в виду BCB.
Уже заработало.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.048 c