2010-03-26 10 views
0

S'il vous plaît aidez-moi à comprendre ce que je fais mal!ShowBrowserBar() ne montre pas la barre d'outils dans IE8

J'ai un problème lorsque j'activer par programme ma barre d'outils IE à partir d'un autre programme. Faire en suivant les instructions données sur le site de support 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; 

Ce code fonctionne correctement dans IE7, mais ne fonctionne pas dans IE8. Dans les deux cas, ShowBrowserBar() renvoie S_OK, mais dans IE8, toolbar.dll n'est pas chargé dans le navigateur, c'est-à-dire que la barre d'outils n'est pas activée et n'est donc pas affichée. J'ai également essayé de lancer IE8 avec trois onglets et de vérifier si ShowBrowserBar() tente d'ouvrir la barre d'outils dans les onglets, pas le processus du gestionnaire.

Il est fichier journal:

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! 

Tout fonctionne comme prévu dans IE7, mais pas dans IE8, et je ne peux pas comprendre pourquoi la méthode ShowBrowserBar() retourne S_OK dans les deux d'entre eux.

Quelqu'un at-il des indices?

Cordialement, Anna.

Répondre

0

Je trouve une réponse à ce problème! Par défaut, tout module complémentaire ou barre d'outils installé dans Internet Explorer sera activé; mais il peut ensuite être désactivé (vous ne pouvez plus l'utiliser), soit parce que vous ou un autre utilisateur Windows l'avez désactivé manuellement, soit parce qu'un programme d'installation tiers en conflit l'a automatiquement désactivé. Si l'utilisateur désactive la barre d'outils manuellement, vous ne pouvez pas l'afficher automatiquement! Vous devez réactiver le module complémentaire dans Outils, Gérer les modules complémentaires.