2012-02-21 3 views
0

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

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

+0

Я знаю, что IE7 не поддерживает это. Есть ли конкретная версия IE, на которую вы нацеливаетесь? –

ответ

3

Правильный способ сделать это от BHO - использовать IWebBrowser2::Navigate2() (doc link) и пройти navOpenInNewTab (doc link).

Взаимодействие exists at pinvoke.net, так что вы можете начать с этого.

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

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

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

+0

Спасибо. Я не понял, что TargetFrameName можно использовать для открытия новой вкладки: http://msdn.microsoft.com/en-us/library/cc491275%28v=vs.90%29.aspx это «родной» метод C# , не нужно делать pinvoke – Julien

+0

Направляя _blank или некоторые такие, вы можете получить новую вкладку, но пользователь может в некоторой степени настроить это поведение, так что это может быть новое окно. –

Смежные вопросы