ShowBrowserBar()在IE8中不显示工具栏

时间:2010-03-26 11:32:35

标签: c++ internet-explorer-8 toolbar

请帮助我理解我做错了什么!

当我从其他程序以编程方式激活我的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。

有人有任何线索吗?

热烈的问候, 安娜。

1 个答案:

答案 0 :(得分:0)

我找到了这个问题的答案! 默认情况下,将启用您在Internet Explorer中安装的任何加载项或工具栏;但它可以在以后被禁用(您不能再使用它),因为您或其他Windows用户已手动禁用它,或者因为冲突中的第三方安装程序自动禁用它。如果用户手动禁用工具栏,则无法自动显示!您需要在“工具”,“管理加载项”中重新启用该加载项。