2015-05-16 3 views
2

У меня есть стандартный WebBrowser Элемент управления, который был изменен для использования IE11 в режиме Edge (see here for details for how I did that).Управление веб-браузером и содержимое Adobe Flash

Я не может играть флэш-содержимое на некоторых веб-сайтах, заметные один являющийся BBC Iplayer и другие средства массовой информации, требующую вспышка служила на сайте BBC, для которого я получаю следующее сообщение об ошибке:

There was a problem initialising the player. Script access is denied in your browser.

Я могу для просмотра этого содержимого с помощью Internet Explorer, а доступ к сценарию включен в IE. Ошибки подавляются в элементе управления WebBrowser, задав для свойства ScriptErrorsSuppressed значение true, даже если установлено значение false. Я все еще не могу просматривать носители на веб-сайте BBC.

У меня установлена ​​Flash версия 17,0,0,188 (последняя версия с момента написания).

Как я могу просматривать iPhone iPlayer с помощью управления WebBrowser?


Update:

Я проверил это с помощью компьютера, что было установлено флэш-15 и BBC Iplayer и СМИ работали. Так что проблемы с этой версией Flash, я думаю?

ответ

2

Общий консенсус по этому вопросу заключается в том, что это долговечная ошибка Flash, которая кажется, что они никогда не будут обращаться. Вы можете получить немного больше информации по этой ссылке:

http://blogs.msdn.com/b/johan/archive/2009/08/06/problems-with-flash-content-in-the-webbrowser-control.aspx


Она сводится к тому, кэширование междоменных элементов управления ActiveX. Я еще не понял, что это полностью разрешено, но выяснилось, что настройка некоторых параметров функции в реестре для элемента управления WebBrowser помогла.

Основной параметр, который, кажется, влияет на это для меня:

SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_OBJECT_CACHING 

SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_OBJECT_CACHING 

MSDN: https://msdn.microsoft.com/en-us/library/ee330729(v=vs.85).aspx#object_caching

Я установил оба этих '0' через групповую политику. В итоге у меня есть 4 записи, поскольку я делаю это как для ульев HKCU, так и для HKLM (возможно, не нужен, но я все стараюсь).


Я также сделал обычный «FEATURE_BROWSER_EMULATION» установлен на 11000, чтобы использовать IE11.

MSDN: https://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation


Там же этот параметр, который должен отфильтровать IE кэши:

Software\Microsoft\Windows\CurrentVersion\Internet Settings\MimeExclusionListForCache 

прилагая 'применение/х-ударно-волновой вспышка' должна предотвратить кэширование флэш-объектов, но я не видел ничего полезного.


Вот некоторые параметры групповой политики, которые я также применяются:

IE Group Policy settings for ActiveX


Однажды я пошел немного сумасшедший и пытался изменять все настройки для тестирования. Вот скриншот из параметров реестра я изменен с помощью групповой политики:

Registry Settings for WebBrowser Control


Даже после всей этой работы, я могу получить только видео с Facebook (один я использую для тестирования), чтобы загрузить один раз и последующие видео не срабатывают. Однако перезапуск приложения работает. Это неприемлемо, но это все, чего я могу достичь на данный момент.

Некоторые упоминают, что очистка кеша при навигации решает проблему, но я не преследовал этот подход, так как считаю, что это замедлит работу в браузере. Этот подход может работать хорошо, если вы очищаете только кешированные объекты флэш-памяти, но опять-таки не то, что я тестировал.

+2

Спасибо за тщательный ответ! В моем случае ваше третье предложение (список исключений MIME-кешей) действительно работает надежно и было единственным шагом, необходимым для исправления проблемы (я использую Windows 7 Pro x64, IE 11.0.9600.18204 и AX Flash 13.0.0.182). Совершенно откровенно, тот факт, что эта ошибка сообщается по крайней мере уже в 2009 году, была подтверждена Adobe в 2011 году и до сих пор не исправлена ​​в 2016 году, является смешной (и просто идеально подходит для моего общего мнения о Adobe качество ПО). –

0

Я предпочитаю просто очистить SWF файлы из кэша IE каждый раз, когда я начинаю управление и загрузить страницу с флэш-активированное содержанием:

private void ClearCachedSWFFiles() 
{ 
    try 
    { 
     var cachefolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + 
         "\\Microsoft\\Windows\\INetCache\\IE"; 
     var dirinfo = new DirectoryInfo(cachefolder); 
     foreach (var directoryInfo in dirinfo.GetDirectories()) 
     { 
      foreach (var fileInfo in directoryInfo.GetFiles("*.swf")) 
      { 
       fileInfo.Delete(); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
}