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; }
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 ""; }
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(); } } }