0

Après avoir cherché beaucoup sur internet, nous avons trouvé le code ci-dessous pour obtenir seulement une partie du corps de la page web chargée sur le contrôle du navigateur WebObtenir document de page Web dans Windows Mobile 6.0

IPIEHTMLDocument2 *pHTMLDocument; 

IPIEHTMLElement* pBodyElement; 

CComPtr<IDispatch> spDispDoc; 

HRESULT res = m_spWebBrowser2->get_Document(&spDispDoc); 


if(SUCCEEDED(res)) 
{ 
    spDispDoc->QueryInterface(__uuidof(IPIEHTMLDocument2), (void**)&pHTMLDocument); 

    WCHAR szText[256]; 
    DISPID id; 
    OLECHAR FAR* szTemp; 

    // store "body" 
    szTemp = szText; 
    StringCchPrintf(szText, 256, L"body", id); 

    // get the body 
    pHTMLDocument->GetIDsOfNames(IID_NULL, &szTemp, 1, LOCALE_USER_DEFAULT, &id); 

    VARIANT varResult; 
    varResult.vt = VT_DISPATCH; 
    VARIANT FAR *pVarResult = &varResult; 
    DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0}; 

    pHTMLDocument->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &dispparamsNoArgs, pVarResult, NULL, NULL); 

    BSTR bodyValue; 

    if(NULL != pVarResult->pdispVal) 
    { 
     pVarResult->pdispVal->QueryInterface(IID_IPIEHTMLElement, (void**)&pBodyElement); 

     pBodyElement->get_innerHTML(&bodyValue); 
    }   
} 

Mais maintenant comment nous obtenons le reste Même si nous avons essayé de transmettre la chaîne "head" à la méthode GetIDsOfNames() et qu'elle passe la valeur d'échec, nous sommes frappés. S'il vous plaît nous fournir la méthode pour accéder/extraire le contenu entier de la page Web dans Windows Mobile 6.0

Merci, Ramanand Bhat.

Répondre

0
void CBrowserWindow::ExtractWebPageDoc() 

{ 
HRESULT       hrResult   = E_FAIL;  
IDispatch      *pIDisp    = NULL; 
IPIEHTMLDocument3    *pIHTMLDocument  = NULL; 
IPIEHTMLElementCollection  *pHTMLElementcol = NULL; 
IPIEHTMLImgElement    *pHTMLImgElement = NULL; 


hrResult = m_spIWebBrowser2->get_Document(&pIDisp); 
if (NULL != pIDisp) 
{ 
    hrResult = pIDisp->QueryInterface(__uuidof(IPIEHTMLDocument3), (void**)&pIHTMLDocument); 
    if(NULL != pIHTMLDocument) 
    { 
     IPIEHTMLElement* pElement = NULL; 
     CComBSTR pHTMLElement; 

     hrResult = pIHTMLDocument->get_documentElement(&pElement); 
     if (SUCCEEDED(hrResult)) 
     {        
      pElement->get_innerHTML(&pHTMLElement.m_str); 
      SaveToHTMLFile(pHTMLElement); 
     } 

     hrResult = pIHTMLDocument->get_images(&pHTMLElementcol); 
     if (NULL != pHTMLElementcol) 
     { 
      CComBSTR strImage; 
      VARIANT vtBase, vtIndex; 
      long pHTMLElementCollectionLength = 0; 

      VariantInit(&vtBase); 
      vtIndex.vt = VT_UINT; 

      hrResult = pHTMLElementcol->get_length(&pHTMLElementCollectionLength); 
      for (int ilen = 0; ilen < (int)pHTMLElementCollectionLength ; ilen++) 
      {   
       vtIndex.lVal = ilen; 

       pIDisp = NULL; 
       hrResult = pHTMLElementcol->item(vtBase, vtIndex , &pIDisp); 
       if (NULL != pIDisp) 
       { 
        hrResult = pIDisp->QueryInterface(__uuidof(IPIEHTMLImgElement), (void**)&pHTMLImgElement); 

        if (NULL != pHTMLImgElement) 
        //CComQIPtr<IPIEHTMLImgElement> imgElement(pIDisp); 
        //imgElement->get_src(&strImage.m_str); //I get it here :) 
        pHTMLImgElement->get_src(&strImage.m_str); 
       } 
      } 
     } 
    } 
} 

}

mentionnés ci-dessus code obtient la totalité du contenu de la page Web dans Windows dispositifs mobiles.

Questions connexes