示例#1
0
BOOL GetControlBoolAttribute(IHTMLDocument2 *pDoc, CString szId, CString szAttributeName)
{
    HRESULT hr = S_OK;
    IHTMLElement* pElem = NULL;
    hr = GetElementById(pDoc, szId, &pElem);
    if (hr == S_OK && pElem)
    {
        VARIANT varAttr;
        varAttr.vt = VT_BOOL;
        BSTR bstrAttributeName = szAttributeName.AllocSysString();
        hr = pElem->getAttribute(bstrAttributeName, 0, &varAttr);
        ::SysFreeString(bstrAttributeName);        
        
        if (hr == S_OK && varAttr.vt == VT_BOOL)
        {
            return varAttr.boolVal;
        }
    }

    return FALSE;
}
示例#2
0
CString GetControlStringAttribute(IHTMLDocument2 *pDoc, CString szId, CString szAttributeName)
{
    HRESULT hr = S_OK;
    IHTMLElement* pElem = NULL;
    hr = GetElementById(pDoc, szId, &pElem);
    if (hr == S_OK && pElem)
    {
        VARIANT varAttr;
        varAttr.vt = VT_BSTR;
        BSTR bstrAttributeName = szAttributeName.AllocSysString();
        hr = pElem->getAttribute(bstrAttributeName, 0, &varAttr);
        ::SysFreeString(bstrAttributeName);

        if (hr == S_OK && varAttr.vt == VT_BSTR)
        {
            return CString(varAttr.bstrVal);
        }
    }

    return "";
}
示例#3
0
void ExplorerElement::getAttribute(const char *attribute, std::string & value)
{
	if (strcmp (attribute,"style") == 0)
		getStyleAttribute (m_pElement, value);
	else
	{
		IHTMLElement *e;
		value.clear();
		HRESULT hr = m_pElement->QueryInterface(IID_IHTMLElement, reinterpret_cast<void**>(&e));
		if (!FAILED(hr) && e != NULL)
		{
			BSTR bstr = Utils::str2bstr(attribute);
			VARIANT v;
			hr = e->getAttribute(bstr, 2 /* as bstr*/, &v);
			if (!FAILED(hr) && v.vt == VT_BSTR)
			{
				Utils::bstr2str(value, v.bstrVal);
				SysFreeString(v.bstrVal);
			}
			SysFreeString(bstr);
			e->Release();
		}
	}
}