Saturday, October 22, 2005

Get Yahoo HTML Text in Chat Dialog

void YahooToolAPI::TestGetHTMLText()
{
    CoInitialize(NULL);
    HINSTANCE hInst = ::LoadLibrary(_T("OLEACC.DLL"));
    std::string strTemp;
    CComPtr spDoc;
    LRESULT lRes;

    strTemp="";
    UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
    ::SendMessageTimeout(m_hPeerWnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );

    LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress(hInst, _T("ObjectFromLresult"));
    if (pfObjectFromLresult != NULL )
    {
        HRESULT hr;
        //UUID IID_IYMHTMLDocument;
        //IID_IYMHTMLDocument.Data1 = 0x626FC520;
        //IID_IYMHTMLDocument.Data2 = 0xA41E;
        //IID_IYMHTMLDocument.Data3 = 0x11CF;
        //IID_IYMHTMLDocument.Data4[0] = 0xA7;
        //IID_IYMHTMLDocument.Data4[1] = 0x31;
        //IID_IYMHTMLDocument.Data4[2] = 0x0;
        //IID_IYMHTMLDocument.Data4[3] = 0xA0;
        //IID_IYMHTMLDocument.Data4[4] = 0xC9;
        //IID_IYMHTMLDocument.Data4[5] = 0x8;
        //IID_IYMHTMLDocument.Data4[6] = 0x26;
        //IID_IYMHTMLDocument.Data4[7] = 0x37;

        hr = (*pfObjectFromLresult)(lRes, IID_IHTMLDocument2, 0, (void**)&spDoc);
        if (SUCCEEDED(hr))
        {
            CComPtr pHTMLElement;
            CComPtr pParentHTMLElement;
            CComPtr pCollection;
           
            hr = spDoc->get_all(&pCollection);
            //VARIANT name;
            //VARIANT index;
            //pCollection->item(name, index, &pDispatch);
            hr = spDoc->get_body(&pHTMLElement);
            //hr = pHTMLElement->get_parentElement(&pParentHTMLElement);
            //pCollection->item( vtIndex, vtMissing, &pDispatch);
            //pDispatch->QueryInterface( &pElement );
            //pElement->getAttribute( ... );

            BSTR bstrText;

            pHTMLElement->get_innerHTML(&bstrText);
            TRACE("%s", (char *)_bstr_t(bstrText));
            //pHTMLElement->get_outerHTML(&bstrText);
            //TRACE("%s", (char *)_bstr_t(bstrText));
           
            //pParentHTMLElement->get_innerHTML(&bstrText);
            //TRACE("%s", (char *)_bstr_t(bstrText));
            //pParentHTMLElement->get_outerHTML(&bstrText);
            //TRACE("%s", (char *)_bstr_t(bstrText));
            //pParentHTMLElement->get_outerText(&bstrText);
            //TRACE("%s", (char *)_bstr_t(bstrText));

            //pHTMLElement->get_outerText(&bstrText);
            //TRACE("%s", (char *)_bstr_t(bstrText));
            //pHTMLElement->get_innerText(&bstrText);
            //pHTMLElement->put_innerText(bstr_t("Ba me may"));
            //TRACE("%s", (char *)_bstr_t(bstrText));
            //pHTMLElement->toString(&bstrText);
            //TRACE("%s", (char *)_bstr_t(bstrText));
            //strTemp = (char *)_bstr_t(bstrText);
        }
    }
    ::FreeLibrary(hInst);
}