ShowBrowserBar () не показывает панель инструментов в IE8 - PullRequest
0 голосов
/ 26 марта 2010

Пожалуйста, помогите мне понять, что я делаю неправильно!

У меня проблема при программной активации панели инструментов IE из другой программы. Делать это, следуя инструкциям, приведенным на сайте поддержки Microsoft (http://support.microsoft.com/kb/q255920/):

        SHDocVw::IWebBrowser2Ptr pIE;
  HRESULT hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, 
    CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (LPVOID*)&pIE);
  if(FAILED(hr)) return;
  try {
   _variant_t vClsID;
   _variant_t vVis;
   _variant_t vNotUsed;

   vClsID.vt = VT_BSTR;
   vClsID.bstrVal = SysAllocString(OLESTR("{MY_TOOLBAR_GUID}"));
   vVis.vt = VT_BOOL;
   vVis.boolVal = VARIANT_TRUE;
   vNotUsed.vt = VT_INT;
   vNotUsed.intVal = 1;

   hr = pIE->ShowBrowserBar()(&vClsID, &vVis, &vNotUsed);
   SysFreeString(vClsID.bstrVal);

   if(FAILED(hr)) return;
  }catch(...) {return;}
pIE->Navigate2(&Url);
pIE->Visible = TRUE;

Этот код работает правильно в IE7, но не работает в IE8. В обоих случаях ShowBrowserBar () возвращает S_OK, но в IE8 toolbar.dll не загружается в браузер, то есть панель инструментов не активируется и, следовательно, не отображается. Я также попытался запустить IE8 с тремя вкладками и проверить, пытается ли ShowBrowserBar () открыть панель инструментов на вкладках, а не процесс менеджера.

Это файл журнала:

Handle url 'outlook:'
ShowBrowserBar() FAILED!
Handle url 'http://www.handypassword.com'
ShowBrowserBar() SUCCESSED!
Handle url 'http://www.google.ru/'
ShowBrowserBar() SUCCESSED!
Handle url 'http://vkontakte.ru/'
ShowBrowserBar() SUCCESSED!

В IE7 все работает, как и ожидалось, но не в IE8, и я не могу понять, почему метод ShowBrowserBar () возвращает S_OK в обоих из них.

У кого-нибудь есть какие-нибудь подсказки?

С уважением, Anna.

1 Ответ

0 голосов
/ 21 октября 2010

Я нашел ответ на эту проблему! По умолчанию любая надстройка или панель инструментов, которые вы устанавливаете в Internet Explorer, будут включены; но впоследствии он может быть отключен (вы больше не можете его использовать), либо потому, что вы или другой пользователь Windows отключили его вручную, либо потому, что сторонний установщик в конфликте автоматически отключил его. Если пользователь отключил панель инструментов вручную, вы не сможете показать ее автоматически! Необходимо повторно включить надстройку в разделе «Инструменты», «Управление надстройками».

...