| Index: src/shared/MsHTMLUtils.cpp |
| diff --git a/src/shared/MsHTMLUtils.cpp b/src/shared/MsHTMLUtils.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..ae604d61af434a9c1a4ee63fc622a735f53863b8 |
| --- /dev/null |
| +++ b/src/shared/MsHTMLUtils.cpp |
| @@ -0,0 +1,33 @@ |
| +#include "MsHTMLUtils.h" |
| + |
| +GetHtmlElementAttributeResult GetHtmlElementAttribute(IHTMLElement& htmlElement, |
| + const ATL::CComBSTR& attributeName) |
| +{ |
| + GetHtmlElementAttributeResult retValue; |
| + ATL::CComVariant vAttr; |
| + ATL::CComPtr<IHTMLElement4> htmlElement4; |
| + if (FAILED(htmlElement.QueryInterface(&htmlElement4)) || !htmlElement4) |
| + { |
| + return retValue; |
| + } |
| + ATL::CComPtr<IHTMLDOMAttribute> attributeNode; |
| + if (FAILED(htmlElement4->getAttributeNode(attributeName, &attributeNode)) || !attributeNode) |
| + { |
| + return retValue; |
| + } |
| + // we set that attribute found but it's not necessary that we can retrieve its value |
| + retValue.isAttributeFound = true; |
| + if (FAILED(attributeNode->get_nodeValue(&vAttr))) |
| + { |
| + return retValue; |
| + } |
| + if (vAttr.vt == VT_BSTR && vAttr.bstrVal) |
| + { |
| + retValue.attributeValue = vAttr.bstrVal; |
| + } |
| + else if (vAttr.vt == VT_I4) |
| + { |
| + retValue.attributeValue = std::to_wstring(vAttr.iVal); |
| + } |
| + return retValue; |
| +} |