2010-03-26 1 views
0

Пожалуйста, помогите мне понять, что я делаю неправильно!ShowBrowserBar() не отображает панель инструментов в IE8

У меня проблема, когда я программно активирую панель инструментов 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 в обоих из них.

У кого-нибудь есть ключи?

С уважением, Anna.

ответ

0

Я нахожу ответ на эту проблему! По умолчанию будет добавлено любое дополнение или панель инструментов, которые вы устанавливаете в Internet Explorer; но впоследствии он может стать отключенным (вы больше не сможете его использовать), так как вы или другой пользователь Windows вручную отключили его, или потому, что сторонний установщик в конфликте автоматически отключил его. Если пользователь отключить панель инструментов вручную, вы не сможете ее автоматически отобразить! Вам нужно снова включить надстройку в «Инструменты», «Управление надстройками».