2009-08-04 7 views
0

Je veux faire propre application de navigateur avec la propre valeur de User-Agent.IE6 +, comment modifier User-Agent pour les requêtes Ajax aussi?

Navigateur basé sur CHtmlView. MFC.

Mais existe étrange problème avec User-Agent de requêtes Ajax ...

Je l'ai fait:

  1. valeur User-Agent est utilisé comme argument pour naviguer(). Une demande Navigate() utilise le droit User-Agent.

  2. Surcharge de la méthode OnAmbientProperty() de la classe CHtmlView.

 
    BOOL MyHtmlView::OnAmbientProperty(COleControlSite *pSite, 
DISPID dispid, VARIANT *pvar) 
    { 
     USES_CONVERSION; 
     // Change user agent for this web browser host during hyperlinks 
     if (dispid == DISPID_AMBIENT_USERAGENT) 
     { 
     pvar->vt = VT_BSTR; 
     pvar->bstrVal = ::SysAllocString(m_userAgent); 
     return TRUE; 
     } 
     return CHtmlView::OnAmbientProperty(pSite, dispid, pvar); 
    } 

Ce problème résoudre avec lien hypertexte.

Mais je dois utiliser ce navigateur pour certaines applications Ajax. Et voici un problème. Pour les requêtes Ajax, utilisez la valeur d'origine User-Agent d'origine.

Mon PC est WinXP basé sur IE7.

Une idée de comment résoudre ce problème? Comment changer User-Agent pour n'importe quelle requête de mon navigateur?

Merci!

Répondre

0

Je résolu un problème UrlMkSetSessionOption(), il a changé les paramètres IE pour la session en cours uniquement:

 
    const char ua[] = "My user agent string"; 
    HRESULT rez = UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, (LPVOID)ua, sizeof(ua), 0); 

Juste un mais, il change les paramètres pour une fois. Un autre appel ne renvoie aucune erreur et aucun changement.

Quelques références: Changing the user agent of the WebBrowser control

Questions connexes