使用ATL做toolbar,发现必须要手工显示出来,请问有什么办法能够让toolbar和IE一起加载?

解决方案 »

  1.   

    bool ShowIEBar(BSTR barCLSID,bool barVisible)
    {
    VARIANT vtBandGUID = {0}, vtShow = {0};
    vtBandGUID.vt = VT_BSTR;

    vtBandGUID.bstrVal = barCLSID;
    vtShow.vt = VT_BOOL;
    vtShow.boolVal = barVisible;
    m_pWebBrowser2->ShowBrowserBar(&vtBandGUID, &vtShow, 0);

    return TRUE;
    }Call:
    ShowIEBar(SysAllocString(OLESTR("{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}")), TRUE);
      

  2.   

    还有点问题。当安装完成时,IE不会自动加载这个toolbar,所以也没有机会调用这个方法啊?
      

  3.   

    新开启的IE会加载,以前的IE这种方法不行
      

  4.   

    试了一下,是这样。安装完以后。toolbar并没有,dll也没有被load,因为SetSite没有被调用。
    只有在浏览器的菜单view->toolbar->mytoolbar,选中以后,dll才会被load。
      

  5.   

    不过可以将这个toolbar注册成为一个bho,这样就总是会被load了。
      

  6.   

    再写一个BHO,在这个BHO里加入上面的显示工具栏代码。
      

  7.   

    CoCreateInstance CLSID_InternetExplorer,  ,,,IID_IWebBrowser2,
    默认的IE是不可见的
      

  8.   

    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\WebBrowser\IEBarlayout决定了哪些bar显示,包括view->toolbar->...里的所有Toolbar。不过这个结构没有公开。