ПРИМЕЧАНИЕ:этот ответ был первоначально в ответ на вопрос о щедрости и редактирование, которое было удалено о том, как это сделать с помощью кода. Части этого все еще имеют отношение к исходному вопросу.
Вы можете сделать это довольно прямолинейно IF у вас есть права администратора, поскольку вам необходимо изменить реестр. Не уверен, как далеко вы получите без прав администратора и сможете протестировать позже, но вот как это сделать с помощью кода (в реальной реализации я бы сделал это как часть настройки) или проверить, существуют ли ключи каждый раз, что кажется расточительным):
Вам нужно добавить один ключ (показывая два здесь для регистрации расширений, вам могут понадобиться дополнительные клавиши для автоматического воспроизведения или настройки на проигрывателе):
private void Form1_Load(object sender, EventArgs e) {
/*This first key is not necessary - and if you will be using common
* extensions like mp4, skip this step altogether!!
*/
RegistryKey key = Registry.CurrentUser.OpenSubKey("Software", true)
.OpenSubKey("Classes", true);
key.CreateSubKey(".myExt");
key = key.OpenSubKey(".myExt", true);
key.SetValue("", "WMP11.AssocFile.myExt");
key.SetValue("Content Type", "video/x-ms-wmv");
key.SetValue("PerceivedType", "video");
/*Here is the magic key which will make the dialog go away*/
key = Registry.CurrentUser.OpenSubKey("Software", true)
.OpenSubKey("Microsoft", true)
.OpenSubKey("MediaPlayer", true)
.OpenSubKey("Player", true)
.OpenSubKey("Extensions", true);
key.CreateSubKey(".myExt");
key = key.OpenSubKey(".myExt", true);
key.SetValue("", "");
key.SetValue("Permissions", 0x20);
axWindowsMediaPlayer1.URL = @"C:\Users\Public\Documents\Wildlife.myExt";
}
Media Player создает другие ключи при добавлении через его диалог, но единственное, что обязательно необходимо: HKEY_Current_User.Software.Microsoft.MediaPlayer.Player.Extensions
Если вы хотите увидеть всеMedia Player добавляет
- выбрать сумасшедшее расширение,
- нажмите всегда позволяет при запросе и затем
- поиска в реестре для всех ключей, создаваемых в.
Вышеприведенный код проверен и работает для меня - подтверждение диалога перед добавлением ключей и отсутствие какого-либо диалога после.
Это хороший общий процесс для программного добавления ассоциаций файлов и программ по умолчанию в Реестр Windows из .NET. Вы должны быть осторожны при регистрации расширения (первый ключ, который я установил выше) IF расширение уже существует (ИСПЫТАНИЕ НА ЭТО). В противном случае вышеуказанный код с радостью перезапишет ваши текущие значения. Все, что вам действительно нужно, это тот, который добавлен в: HKEY_Current_User.Software.Microsoft.MediaPlayer.Player.Extensions
в любом случае. Подумайте об этом, проверьте заранее и проверьте, прежде чем сходить с ума в реестр!
Это всегда отличная идея для резервного копирования реестра перед тем, как играть с ним.
Конечная нота: пропустил ваш вопрос о том, как воспроизвести, как только вы нажали всегда позволяют: просто удалить запись в HKEY_Current_User.Software.Microsoft.MediaPlayer.Player.Extensions
и вуаля!
Этот ответ предполагает, что у вас есть рабочее знание regedit
.
Заключительная записка # 2: Ответ, связанный с вопросами в Bounty. Другие ошибки можно подавить, установив команду Media Player, чтобы вы могли обрабатывать события ошибок, а затем записывать свой собственный обработчик. Я не делал этого раньше, поэтому не могу прокомментировать легкость и что можно/не может контролировать через этот method.
Элемент управления проигрывателем Windows Media не вызывает исключения при обнаружении ошибки, такой как неверный URL-адрес. Вместо этого он сигнализирует о событии. Ваше приложение должно обрабатывать события ошибок, отправленные игроком.
Они могут быть обработаны путем создания/регистрации MediaError
событие:
private void axWindowsMediaPlayer1_MediaError(object sender, AxWMPLib._WMPOCXEvents_MediaErrorEvent e) {
// Handle errors and profit!
}
Затем установите его в качестве обработчика в окне Events
свойств для элемента управления - то же для других событий, таких как ErrorEvent
.
ОК, я получил, как далеко этот код: Private Sub wmpPlayer_Warning (отправитель как объект, е как _WMPOCXEvents_WarningEvent) Ручки WMPlayer.Warning MsgBox (e.warningType.ToString) Но появляется сообщение, и этот код не будет достигнуто на всех ... End Sub Частная функция wmPlayer_Warning() As Object Throw New NotImplementedException Конечная функция – Chiwda
@abcdefghi: вопрос о щедрости не связан. Спросите отдельно, чтобы получить ответ. –
@ RomanR. Похоже, что для меня такой же вопрос, за исключением того, что он хочет обработать его в коде. Кроме того, ответ, который я дал, должен был решить, если я не перепутаю вопрос? Я согласен, что я бы повторно спросил и связался с этим вопросом, но щедрота уже установлена ... – Matthew