2010-03-26 145 views
0

請幫我理解我在做什麼錯了!ShowBrowserBar()在IE8中不顯示工具欄

我從其他程序以編程方式激活我的IE工具欄時遇到問題。 使其成爲在微軟支持網站(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

我找到了這個問題的答案! 默認情況下,您在Internet Explorer中安裝的任何加載項或工具欄都將啓用;但以後可能會被禁用(無法再使用它),原因可能是您或其他Windows用戶手動禁用了它,或者因爲處於衝突狀態的第三方安裝程序會自動禁用它。如果用戶手動禁用工具欄,則無法自動顯示它!您需要在Tools,Manage Add-On中重新啓用加載項。