FreeBasic
Главная
Вход
Регистрация
Четверг, 25.04.2024, 03:58Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Freebasic » Вопросы по языку FreeBasic » Библиотека Disphelper и работа с WMPlayer.OCX
Библиотека Disphelper и работа с WMPlayer.OCX
WQДата: Пятница, 18.07.2014, 13:02 | Сообщение # 1
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Пытаюсь воспроизвести mp3 c помошью объекта WMPlayer.
Объект создается, файл подгружается, устанавливаю громкость.

Но запуск проигрывания происходит с сообщение об ошибке. В этой строке можно писать все, что угодно, проигрывание начинается в любом случае.
Задача - убрать сообщение с ошибкой.
Я не слишком разбираюсь в свойствах и методах, но в disphelper работа с ними реализована как-то совсем непонятно...

Код
#Define UNICODE
#Include Once "disphelper/disphelper.bi"
DISPATCH_OBJ(WMP)
dhInitialize(TRUE)
dhToggleExceptions(TRUE)

dhCreateObject("WMPlayer.OCX", NULL, @WMP)
dhPutValue(WMP, ".Url = %s", "C:\1.mp3")
dhPutValue(WMP, ".Settings.Volume = %d", 50)

dhPutValue(WMP, ".controls = %s", "Play") 'строка с ошибкой

Sleep
 
haavДата: Пятница, 18.07.2014, 15:49 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Цитата
Я не слишком разбираюсь в свойствах и методах, но в disphelper работа с ними реализована как-то совсем непонятно...


Согласен, да и документации кот наплакал. Я как то пытался работать с архивами с помощью этой либы, но так и забросил.

С этим кодом, я так понимаю надо вызвать сначала интерфейс IDispatch. Это у меня вроде получилось, не знаю правда правильно или нет smile
А вот дальше через него вроде как нужно вызывать методы, но вот это как раз у меня не вышло. В общем вот я помутил, но результат тоже нулевой:

Код
##Define UNICODE
#Include Once "disphelper/disphelper.bi"
Dim As Integer iRet
Dim As IDispatch Ptr Controls
Dim As WString*30 methods = "play"
DISPATCH_OBJ(WMP)
dhInitialize(TRUE)
dhToggleExceptions(TRUE)

dhCreateObject("WMPlayer.OCX", NULL, @WMP)

dhPutValue(WMP, ".Url = %T", "1.mp3")
dhPutValue(WMP, ".Settings.Volume = %d", 50)
dhGetValue("%o",@Controls,WMP,".controls")

? controls ' интерфейс получен

dhGetValue("%d", @iRet, controls, "isAvailable(%T)", @methods)

? iRet ' здесь вроде как должен быть адрес, но iRet = 0
'dhCallMethod(Controls,"play()")
'dhPutValue(WMP, ".Controls = %s", ".play") 'строка с ошибкой

Sleep


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Вторник, 22.07.2014, 19:34 | Сообщение # 3
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата haav ()
В общем вот я помутил, но результат тоже нулевой:

Спасибо за пример.
Вообще, у меня задача состоит в получении продолжительности музыки/видео.
WMPlayer.OCX подходит, но работать с ним, видимо, нормально не получится.
Есть MediaInfo.bi, но примера к ней нет
 
haavДата: Вторник, 22.07.2014, 20:31 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
А чем window9 не устраивает? Там есть воспроизведение музыки и видео. А продолжительность нетрудно высчитать (простейшее математическое действие).

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Вторник, 22.07.2014, 21:51 | Сообщение # 5
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата haav ()
А чем window9 не устраивает? Там есть воспроизведение музыки и видео. А продолжительность нетрудно высчитать (простейшее математическое действие).

Дело в том, что WMPlayer и без кодеков много чего проигрывает.
Функции из window9 хороши, но требуют установленных кодеков.
А на счет продолжительности, я так понимаю, речь о проигрывании файла определенное время и двух замерах MovieGetCurrentPosition()?
 
haavДата: Среда, 23.07.2014, 05:27 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Делишь то, что возвращает GetEndPosMovie на 10.000.000 (10 миллионов), получаешь продолжительность медиафайла в секундах.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Среда, 23.07.2014, 12:09 | Сообщение # 7
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата haav ()
Делишь то, что возвращает GetEndPosMovie на 10.000.000 (10 миллионов), получаешь продолжительность медиафайла в секундах.

Спасибо. Но нужно это отразить в справке.
 
Форум » Freebasic » Вопросы по языку FreeBasic » Библиотека Disphelper и работа с WMPlayer.OCX
  • Страница 1 из 1
  • 1
Поиск: