Как написать плагин для IE, который будет заменять картинки на свой значок? Как написать сам плагин понятно, а вот как заменять картинки не могу понять?
Спасибо!!!
Здравствуйте, Tasha, Вы писали:
T>Как написать плагин для IE, который будет заменять картинки на свой значок? Как написать сам плагин понятно, а вот как заменять картинки не могу понять?
Если по-простому, то так:
HRESULT GetElementCollection(LPCOLESTR pszTagName, IDispatch* pDocDisp, IHTMLElementCollection** ppColl)
{
HRESULT hr = E_FAIL;
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spHTML(pDocDisp);
if (spHTML)
{
CComPtr<IHTMLElementCollection> spAll;
hr = spHTML->get_all(&spAll);
if (SUCCEEDED(hr) && spAll)
{
CComVariant vTagName = pszTagName;
vTagName.ChangeType(VT_BSTR);
CComPtr<IDispatch> spTagsDisp;
hr = spAll->tags(vTagName, &spTagsDisp);
if (SUCCEEDED(hr) && spTagsDisp)
{
CComQIPtr<IHTMLElementCollection, &IID_IHTMLElementCollection>
spElems(spTagsDisp);
if (spElems)
hr = spElems.CopyTo(ppColl);
else
hr = E_FAIL;
}
}
}
return hr;
}
HRESULT ProcessImages(IDispatch* pDocDisp)
{
CComPtr<IHTMLElementCollection> spElems;
HRESULT hr = GetElementCollection(L"IMG", pDocDisp, &spElems);
if (SUCCEEDED(hr) && spElems)
{
long nCnt;
hr = spElems->get_length(&nCnt);
if (SUCCEEDED(hr))
{
for (long i = 0; i < nCnt; i++)
{
CComVariant varIdx;
V_VT(&varIdx) = VT_I4;
V_I4(&varIdx) = i;
CComPtr<IDispatch> spItemDisp;
hr = spElems->item(varIdx, varIdx, &spItemDisp);
if (SUCCEEDED(hr) && spItemDisp)
{
CComQIPtr<IHTMLImgElement,
&IID_IHTMLImgElement> spImage(spItemDisp);
if (spImage)
{
CComBSTR bsSrc;
spImage->get_src(&bsSrc);
if (SUCCEEDED(hr) && bsSrc)
{
CComBSTR newSrc(".....");
spImage->set_src(newSrc);
}
}
}
}
}
}
return hr;
}
Если по-нормальному, то писать свой моникер и прямо в нем налету менять html, но, думаю, так углубляться не станете