Как открыть новую вкладку из BHO?

Я хотел бы открыть новую вкладку из моего BHO, сделанного на С#. Process.Start(u) открывает новое окно, а не вкладку, и вызывает браузеры по умолчанию, которые могут не быть IE.

Я хочу открыть новую вкладку, чтобы предложить пользователю загрузить и установить последнюю версию BHO.


person Julien    schedule 21.02.2012    source источник
comment
Я знаю, что IE7 не поддерживает это. Есть ли конкретная версия IE, на которую вы ориентируетесь?   -  person M.Babcock    schedule 21.02.2012


Ответы (1)


Правильный способ сделать это из BHO — использовать IWebBrowser2::Navigate2() (ссылка на документ) и передать navOpenInNewTab (ссылка на документ).

Interop существует на pinvoke.net, поэтому вы, вероятно, можете начать с него.

Вы можете получить указатель IWebBrowser2 со своего сайта, выполнив следующие действия:

  1. QueryInterface() вашего сайта для IID_IServiceProvider.
  2. QueryService() IServiceProvider для SID_STopLevelBrowser, IID_IServiceProvider.
  3. QueryService() IServiceProvider верхнего уровня для SID_SWebBrowserApp, IID_IWebBrowser2.

... но я не знаю, как это сделать на С#.

person i_am_jorf    schedule 21.02.2012
comment
Спасибо. Я не знал, что TargetFrameName можно использовать для открытия новой вкладки: msdn.microsoft.com/en-us/library/cc491275%28v=vs.90%29.aspx это собственный метод С#, нет необходимости делать pinvoke - person Julien; 22.02.2012
comment
Настроив _blank или что-то подобное, вы можете получить новую вкладку, но пользователь может в некоторой степени настроить это поведение, поэтому это может быть новое окно. - person i_am_jorf; 22.02.2012