| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Динамическая загрузка wmp.dll |
| Автор: Brain89 14.6.2011, 15:14 |
| Здравствуйте. У меня проект, в котором я использую ActiveX-компонент Windows Media Player (wmp.dll). На более раннем этапе я добавил его на форму, используя Tools -> Choose Toolbox Items... и, соответственно, контрол отобразился на toolbox'е. Перетащил на форму, создалось два файла (AxInterop.WMPLib.dll, Interop.WMPLib.dll), и после я нормально работал с контролом. Но сейчас таскать за собой эти файлы не хочется, тем более, что у каждого пользователя, у которого стоит Windows Media Player, есть wmp.dll. Поэтому хотелось бы грузить эту dll'ку динамически во время запуска приложения и, соответственно, также динамически создавать плеер. Но понятия не имею, как это сделать |
| Автор: jonie 14.6.2011, 15:37 | ||
| его самому грузить не надо - за это для вас сделаем COM подсистема. Для того чтобы использовать динамические интерфейсы можно использовать dynamic [http://msdn.microsoft.com/en-us/library/dd264736.aspx] т.е. вам надо сначала создать экземпляр класса, потом создать экземпляр, потом заюзать dynamic.
Если интересна "магия", то начать стоит чтение с IDispatch. Если вы работает с .NET Fx<4.0, тогда вам надо будет руками это производить (обращаясь как раз через IDispatch) Пример: http://stackoverflow.com/questions/403218/does-c-net-support-idispatch-late-binding |
| Автор: Voyager 14.6.2011, 23:09 |
| С приложением достаточно распростарнять AxInterop.WMPLib.dll, Interop.WMPLib.dll. Остальное подхватится само. |
| Автор: Brain89 15.6.2011, 10:40 | ||||
| 2jonie Что-то про Activator я забыл. Спасибо. Так вполне COM-объект создается:
А через InvokeMember доступ к свойствам я получил:
Вот только как отобразить теперь его на форме? Т.е. проект я запускаю, где-то на фоне звук есть, а вот как отобразить объект как контрол на форме - я не понимаю. У этого плеера нет такого свойства "UserControl", как в примере. 2Voyager В том-то и задача, чтобы не таскать эти файлы с собой. Ведь создаются они из wmp.dll, которая, в принципе, есть у пользователя. Да и добавить их в инсталлятор не получиться - они защищены Microsoft:) |
| Автор: jonie 15.6.2011, 12:31 |
| Brain89, вообще говоря в .NET 4 (точнее говоря в VS2010) появилась вохможность указать что тебе надо isolated com - это в свойствах reference-а -- тогда информацию о типах система включит сама в главную сборку, не делая интеропов. |
| Автор: Brain89 15.6.2011, 14:33 |
| 2jonie Первый раз о таком слышу |
| Автор: jonie 15.6.2011, 19:47 |