请帮助我理解我做错了什么!
当我从其他程序以编程方式激活我的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。
有人有任何线索吗?
热烈的问候, 安娜。
答案 0 :(得分:0)
我找到了这个问题的答案! 默认情况下,将启用您在Internet Explorer中安装的任何加载项或工具栏;但它可以在以后被禁用(您不能再使用它),因为您或其他Windows用户已手动禁用它,或者因为冲突中的第三方安装程序自动禁用它。如果用户手动禁用工具栏,则无法自动显示!您需要在“工具”,“管理加载项”中重新启用该加载项。