Включение/отключение картинок в IE (C#)
Немного о себе ... Неделю назад обзавёлся идеей сделать тулбар для IE, на котором будет находиться одна кнопка. Задача этой кнопки включать и отключать картинки в IE. С реализацией тулбара проблем не было, а вот карнитки никак не хотят включаться и отключаться .
Начнём с тестового приложения, а именно с компонента System.Windows.Forms.WebBrowser. Создал форму, кинул на неё компонент WebBrowser и одноу кнопку. Немного кода:
private void button1_Click(object sender, EventArgs e)
{
IOleObject ole = webBrowser1.ActiveXInstance as IOleObject;
ole.SetClientSite(new DownloadController());
webBrowser1.Navigate(@"http://google.ru");
}
Класс DownloadController реализует интерфейс IOleClientSite и у него есть нужный нам метод:
[DispId(DISPID_AMBIENT_DLCONTROL)]
public virtual int IDispatchInvokeHandler()
{
return BrowserOptions.ShowImages;
}
Всё работает на УРА!
Теперь собственно о проблеме ... Тоже самое теперь я пытась сделать внутри COM сервера в методе SetSite:
using SHDocVw;
...
public virtual void SetSite(Object pUnkSite)
{
_IServiceProvider sp = pUnkSite as _IServiceProvider;
Guid guid = ExplorerGUIDs.IID_IWebBrowserApp;
Guid riid = ExplorerGUIDs.IID_IUnknown;
object w;
sp.QueryService(ref guid, ref riid, out w);
// В этом месте пытаюсь получить IOleObject различными способами, ничего не получается
Explorer = (WebBrowserClass)Marshal.CreateWrapperOfType(w as IWebBrowser, typeof(WebBrowserClass));
}
Внимание вопрос! (с) что-где-когда
Как получить интерфейс IOleObject в выше приведённом примере? Есть ли другие способы программно включить/отключить картинки в IE? Язык C# — Обязательное требование.