Это немного сложно, но я могу дать вам отправную точку (код был бы слишком длинным, чтобы написать его сейчас), так что вот что я думаю.
Вы просто идете и ищите вулей
HKEY_CLASSES_ROOT
для расширения файла (в вашем случае это будет .ra).Если вы найдете такой ключ, у вас будут подключи, которые помогут вам определить, какое программное обеспечение использовалось для их открытия, или с помощью строкового значения «Тип содержимого», вы выполните другой поиск в HKEY_CLASSES_ROOT, где у вас снова будут ключи, которые будутСкажите, какое программное обеспечение открывает этот тип контента.
Так что вам нужно использовать классы, которые работают с Реестром (если вы хотите сделать это программно).
По поводу вашего второго вопроса: я спрашиваюНе думаю, что есть общий способ встроить любого игрока в ваше приложение.Это потому, что не каждый игрок предоставит какой-либо API для подключения, у вас не будет контракта, на который можно было бы положиться, и множество других проблем.Возможно, вам удастся добиться успеха в использовании Windows API, но я сомневаюсь, что он охватит все сценарии, которые вам в итоге придется поддерживать.
У вас есть несколько вариантов здесь:
- Делайте все, что выможно с Media Player и если формат файла не поддерживается - предложите пользователю открыть его с помощью проигрывателя по умолчанию (простого вызова System.Diagnostics.Process.Start с именем файла должно быть достаточно для Windows, чтобы запустить соответствующую программу) (Самый простой подход).
- Напишите свой собственный плеер, который может читать / преобразовывать из различных форматов.Вы должны быть в состоянии найти множество форматов, поддерживаемых различными библиотеками в Интернете, или, по крайней мере, найти их RFC (самый жесткий из всех, что вы можете сделать).
- Используйте некоторую библиотеку или программное обеспечение для преобразования типов файлов, которые вы не можетеиграть в фоновом режиме и запускать их с помощью медиаплеера, как если бы они были поддержаны (вероятно, это хороший способ достичь максимального результата с минимальными усилиями), вы можете снова запустить некоторые процессы в фоновом режиме с помощью System.Diagnostics.Process.Start, скрываяих от пользователя и загрузить носитель после его преобразования.Видео сайты, такие как YouTube, делают что-то подобное, когда вы загружаете файл - они помещают его в другой процесс, чтобы его можно было конвертировать, и тогда видео доступно в общем формате (в большинстве случаев это флэш-видео - я полагаю, flv).