Подавлять сообщения от встроенного проигрывателя Windows Media
Я работаю над приложением Windows Form, в которое встроен проигрыватель Windows Media, который позволяет воспроизводить видеофайлы. Уникальность в том, что я изменил расширение медиафайлов (по причинам, которые я не могу здесь описать). Например, "xyz.wmv" может называться "xyz.ext". Они играют очень хорошо, но прежде чем они играют, я получаю сообщение:
"Файл, который вы пытаетесь воспроизвести, имеет расширение, которое не соответствует формату файла. Воспроизведение файла может привести к неожиданному поведению. Хотите, чтобы проигрыватель попытался воспроизвести файл?"
Вы можете нажать "Да" и даже установить флажок, чтобы не показывать это сообщение снова, но я не хочу этого по всем очевидным причинам, включая тот факт, что оно сбивает с толку пользователей. Я изучил свойства.settings, но не могу найти способ подавить это сообщение и, что более важно, другие сообщения, которые могут появиться.
2 ответа
Расширение.ext (например) не известно медиапроигрывателю, поэтому предупреждение.
Чтобы изменить это, вы можете изменить реестр и зарегистрировать это расширение. Это официально описано здесь: Расширение имени файла Настройки реестра
Самый простой способ сделать это - создать раздел реестра следующим образом:
HKEY_CURRENT_USER\Software\Microsoft\MediaPlayer\Player\Extensions\.ext
И добавьте два ключевых значения:
Runtime (DWORD): 6
Permissions (DWORD): 15 (or 0xF in hexa)
Это показано здесь:
ПРИМЕЧАНИЕ: этот ответ изначально был ответом на вопрос о вознаграждении и правке, который был удален, как это сделать с помощью кода. Части этого все еще имеют отношение к первоначальному вопросу.
Вы можете сделать это довольно просто, если у вас есть права администратора, так как вам нужно редактировать реестр. Не уверен, как далеко вы доберетесь без прав администратора и сможете проверить позже, но вот как это сделать с помощью кода (в реальной реализации я сделал бы это как часть установки - или проверил бы, существуют ли ключи каждый раз, что кажется расточительным):
Вам нужно добавить одну клавишу (здесь показаны две клавиши для регистрации расширений, вам могут понадобиться дополнительные клавиши для автоматического воспроизведения или настройки на плеере):
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
Если вы хотите увидеть все keys
Media Player добавляет,
- выбрать сумасшедшее расширение,
- нажмите всегда разрешать при появлении запроса, а затем
- поиск в реестре всех ключей, которые создаются.
Приведенный выше код протестирован и работает для меня - подтверждение диалога перед добавлением ключей и отсутствие какого-либо диалога после.
Это хороший общий процесс для программного добавления файловых ассоциаций и программ по умолчанию в реестр Windows из.NET. Вы должны быть осторожны при регистрации расширения (первый ключ, который я установил выше), если расширение уже существует (ТЕСТ ДЛЯ ЭТОГО). В противном случае приведенный выше код с радостью перезапишет ваши текущие значения. Все, что вам действительно нужно, это добавить: HKEY_Current_User.Software.Microsoft.MediaPlayer.Player.Extensions
тем не мение. Продумайте это, проверьте заранее и протестируйте, прежде чем сходить с ума в реестре!!
Это также всегда хорошая идея сделать резервную копию вашего реестра, прежде чем играть с ним.
Последнее замечание: пропустил ваш вопрос о том, как воспроизвести после того, как вы нажали, всегда разрешайте: просто удалите запись в HKEY_Current_User.Software.Microsoft.MediaPlayer.Player.Extensions
и вуаля!
Этот ответ предполагает, что у вас есть практические знания regedit
,
Заключительная записка № 2: Ответ, направленный на вопросы в Баунти. Другие ошибки можно подавить, задав Media Player возможность обрабатывать события ошибок, а затем написав свой собственный обработчик. Я не делал этого раньше, поэтому не могу комментировать легкость и то, что можно / нельзя контролировать с помощью этого метода.
Элемент управления проигрывателя Windows Media не вызывает исключение, когда он обнаруживает ошибку, такую как неверный URL-адрес. Вместо этого он сигнализирует о событии. Ваше приложение должно обрабатывать события ошибок, отправленные игроком.
Затем они могут быть обработаны путем создания / регистрации MediaError
событие:
private void axWindowsMediaPlayer1_MediaError(object sender, AxWMPLib._WMPOCXEvents_MediaErrorEvent e) {
// Handle errors and profit!
}
Затем установите это как обработчик в Events
окно свойств для вашего контроля - то же самое для других событий, таких как ErrorEvent
,