如题,我写了一个BHO程序,
在SetSite函数里面获得页面的IWebBrowser2指针,
然后在Invoke函数里响应IE的事件,
我只在DISPID_DOCUMENTCOMPLETE里添加了代码,
弹出一个对话框,显示页面的插件信息,
当我打开一个页面里只有两个插件的网页时,
显示插件信息的对话框却是不停的弹出来,
反反复复都是那两个插件的信息,调试的时候只显示两个,
运行的时候就是不停显示,至少显示五六次吧,
我想知道这是怎么回事?
我只想显示一次,大家给看看,
SetSite函数的代码如下:
STDMETHODIMP CPlu::SetSite(IUnknown *pUnkSite)
{
USES_CONVERSION;
if (pUnkSite)
{
mWebBrowser2 = pUnkSite;
if (mWebBrowser2)
{
return RegisterEventHandler(TRUE);
}
}
return E_FAIL;
}
在SetSite函数里面获得页面的IWebBrowser2指针,
然后在Invoke函数里响应IE的事件,
我只在DISPID_DOCUMENTCOMPLETE里添加了代码,
弹出一个对话框,显示页面的插件信息,
当我打开一个页面里只有两个插件的网页时,
显示插件信息的对话框却是不停的弹出来,
反反复复都是那两个插件的信息,调试的时候只显示两个,
运行的时候就是不停显示,至少显示五六次吧,
我想知道这是怎么回事?
我只想显示一次,大家给看看,
SetSite函数的代码如下:
STDMETHODIMP CPlu::SetSite(IUnknown *pUnkSite)
{
USES_CONVERSION;
if (pUnkSite)
{
mWebBrowser2 = pUnkSite;
if (mWebBrowser2)
{
return RegisterEventHandler(TRUE);
}
}
return E_FAIL;
}
CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> pDisp;
pDisp = pDispParams->rgvarg[1].pdispVal;
CComQIPtr<IUnknown, &IID_IUnknown> pUnkDisp;
pUnkDisp = pDisp;
CComQIPtr<IUnknown, &IID_IUnknown> pUnkBrowser;
pUnkBrowser = m_pWebBrowser2;//m_pWebBrowser2是SetSite中获得的接口
if(pUnkBrowser == pUnkDisp)
{
//整个页面加载完毕
}
else
{
//其它FRAME加载完毕
}