tavria2

Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Kindly Цитата: Можно ли сделать повтор v2m музыки? | Можно. Цитата: Раньше tavria2 отвечал, что AMS пока не поддерживает булевые вызовы из библиотек... | IMHO tavria2 не совсем прав , вместо true/false можно использовать 1/0. Цитата: Как я ни старался - повторение трека так и не активировал. | Здесь причина не в булевых параметрах, а в принципе работы DLL. Вот, что у нас получается: Вызываем из DLL, ф-цию проигрывания файла с параметром повтора, при этом происходит "загрузка" DLL, запуск ф-ции на выполнение и "выгрузка" DLL. Хочу обратить внимание на то, что "выгрузка" DLL происходит сразу после запуска ф-ции, т.е. ф-ция еще работает, а DLL в памяти уже нету, вот и получается, что при доигрывании файла ф-ция пытается обратиться к DLL, которой в памяти уже нет. В таком случае нам необходимо, чтобы DLL висела в памяти пока мы не скажем - хватит . Код: cPathDLL = _SourceFolder.."\\AutoPlay\\Docs\\MagicV2mEngine.dll" -- путь к DLL cPathV2M = _SourceFolder.."\\AutoPlay\\Docs\\tPORt - NetPlanning2.03crk.v2m" -- путь к V2M -- загружаем DLL hDLL = DLL.CallFunction("kernel32.dll", "LoadLibraryA", "\""..cPathDLL.."\"", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); if (hDLL ~= 0) then -- если DLL загружена -- проигрываем файл с повтором DLL.CallFunction(cPathDLL, "V2mPlayFile", "\""..cPathV2M.."\",1", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); end | При таком варианте загрузки DLL, можно в таймере использовать ф-цию V2mGetTime, для получения текущей позиции воспроизведения в мсек. Если работа с DLL больше не нужна, то ее желательно выгрузить: DLL.CallFunction("kernel32.dll", "FreeLibrary", hDLL, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); | Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 20:45 21-01-2008 | Исправлено: tavria2, 10:12 22-01-2008 |
|