求助:关于ShowBrowserBar的问题

zlm8715 2011-03-29 11:44:42
Dear All,
小弟最近在做IE BHO的东西,想通过函数实现显示Favorite bar,于是写了函数ShowFavorite(),在Invoke()方法中,当发现事件DISPID_DOCUMENTCOMPLETE时调用.
---------------------------------------------------
代码如下:
void CBHOXXX::ShowFavorite()
{
HRESULT hResult;
if (m_pWebBrowser2)
{
// MessageBox(NULL,NULL,NULL,MB_OK);
const CLSID ClisidFavoriteGUID = {0xEFA24E61,0xB078,0x11D0,{0x89,0xE4,0x00,0xC0,0x4F,0xC9,0xE2,0x6E}};

LPOLESTR pwszClsid;
StringFromCLSID(ClisidFavoriteGUID, &pwszClsid);

VARIANT vtBandGUID, vtShow;
::VariantInit(&vtBandGUID);
::VariantInit(&vtShow);

vtBandGUID.vt = VT_BSTR;
vtBandGUID.bstrVal = SysAllocString(pwszClsid);
vtShow.vt = VT_BOOL;

vtShow.boolVal = VARIANT_FALSE;
hResult = m_pWebBrowser2->ShowBrowserBar(&vtBandGUID, &vtShow, 0);

vtShow.boolVal = VARIANT_TRUE;
hResult = m_pWebBrowser2->ShowBrowserBar(&vtBandGUID, &vtShow, 0);

::VariantClear(&vtBandGUID);
::VariantClear(&vtShow);
}
}


STDMETHODIMP CBHOXXX::Invoke(DISPID dispidMember,REFIID riid, LCID lcid, WORD wFlags,
DISPPARAMS * pdispparams, VARIANT * pvarResult,
EXCEPINFO * pexcepinfo, UINT * puArgErr)
{
if (!pdispparams)
{
return E_INVALIDARG;
}
switch (dispidMember)
{
case DISPID_DOCUMENTCOMPLETE:
ShowFavorite();
DocumentComplete(pdispparams);
break;
default:
break;
}
return S_OK;
}
-------------------------------------------------------
问题:
但是,不知道为什么,总是无法显示Favorite bar.
我试过IE8,IE9,都不行。
我确定BHO加载正确了的。
我也调试跟踪到ShowFavorite()里面,确定ShowBrowserBar()的返回值都是S_OK.
ClisidFavoriteGUID 是根据msdn里面的值拿的。
参考http://support.microsoft.com/kb/255920/zh-cn 里的也没用。
msdn中有关于explorer bars的介绍,我看过,讲到需要先注册自定义的explorer bar,但是我现在是要显示Favorite bar,它是IE自带的,还需要注册吗? 不过,我在需要注册自定义的explorer bar的地方没有找到Favorite bar的注册信息。
网上很多帖子,也没讲到关于使用ShowBrowserBar()来显示Favorite bar的文章。比较详细如:http://www.vckbase.com/document/viewdoc/?id=1483
TabBrowser项目也下了看过,多没有关于于使用ShowBrowserBar()来显示Favorite bar的介绍。
哪位知道的给点意见吧,不胜感激。

Thx.
...全文
113 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2011-03-29
  • 打赏
  • 举报
回复
ShowBrowserBar 多调用一次呢.y有时候一次调用不能显示
zlm8715 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyljerry 的回复:]

ShowBrowserBar 多调用一次呢.y有时候一次调用不能显示
[/Quote]

我试过,也不行的。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧