帮忙将下列VC++改成delphi
void DisableFlashMoviesHelper(IHTMLDocument2* pDoc)
{
CComQIPtr<IHTMLDOCUMENT2, &IID_IHTMLDocument2> spHTML(pDoc);
if (spHTML)
{
CComPtr<IHTMLELEMENTCOLLECTION> spAll;
HRESULT hr = spHTML->get_all(&spAll);
if (SUCCEEDED(hr) && spAll)
{
// Find all the OBJECT tags on the (maybe partially loaded) document
CComVariant vTagName = L"OBJECT";
vTagName.ChangeType(VT_BSTR); CComPtr<IDISPATCH> spTagsDisp;
hr = spAll->tags(vTagName, &spTagsDisp);
if (SUCCEEDED(hr) && spTagsDisp)
{
CComQIPtr<IHTMLELEMENTCOLLECTION,
&IID_IHTMLElementCollection> spTags(spTagsDisp);
if (spTags)
{
long nCnt;
hr = spTags->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> spTagDisp;
hr = spTags->item(varIdx, varIdx, &spTagDisp);
if (SUCCEEDED(hr) && spTagDisp)
{
CComQIPtr<IHTMLOBJECTELEMENT,
&IID_IHTMLObjectElement> spObject(spTagDisp);
if (spObject)
{
CComBSTR bsClassID;
hr = spObject->get_classid(&bsClassID);
if (SUCCEEDED(hr) && bsClassID)
{
bsClassID.ToUpper();
if (bsClassID ==
L"CLSID:D27CDB6E-AE6D-11CF-96B8-444553540000")
{
// This is a flash activex control. Resize
// and hide it so we don't have to look at it.
CComQIPtr<IHTMLElement> spElem(spTagDisp);
if (spElem)
{
CComBSTR bs = L"hidden";
CComPtr<IHTMLSTYLE> spStyle;
hr = spElem->get_style(&spStyle);
if (SUCCEEDED(hr) && spStyle)
{
spStyle->put_visibility(bs);
spStyle->put_pixelHeight(0);
spStyle->put_pixelWidth(0);
}
}
ATLTRACE(_T("Deleted flash animation\n"));
}
}
}
}
}
}
}
} // Find all the EMBED tags on the (maybe partially loaded) document
vTagName = L"EMBED";
vTagName.ChangeType(VT_BSTR); spTagsDisp.Release();
spTagsDisp;
hr = spAll->tags(vTagName, &spTagsDisp);
if (SUCCEEDED(hr) && spTagsDisp)
{
CComQIPtr<IHTMLElementCollection> spTags(spTagsDisp);
if (spTags)
{
long nCnt;
hr = spTags->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> spTagDisp;
hr = spTags->item(varIdx, varIdx, &spTagDisp);
if (SUCCEEDED(hr) && spTagDisp)
{
CComQIPtr<IHTMLEmbedElement> spObject(spTagDisp);
if (spObject)
{
CComBSTR bsSrc;
hr = spObject->get_src(&bsSrc);
if (SUCCEEDED(hr) && bsSrc)
{
CString sSrc = CW2T(bsSrc.m_str);
if (sSrc.Right(4).CompareNoCase(_T(".swf")) == 0)
{
// This is a flash activex control. Resize
// and hide it so we don't have to look at it.
CComQIPtr<IHTMLElement> spElem(spTagDisp);
if (spElem)
{
CComBSTR bs = L"hidden";
CComPtr<IHTMLSTYLE> spStyle;
hr = spElem->get_style(&spStyle);
if (SUCCEEDED(hr) && spStyle)
{
spStyle->put_visibility(bs);
spStyle->put_pixelHeight(0);
spStyle->put_pixelWidth(0);
}
}
ATLTRACE(_T("Deleted flash animation\n"));
}
}
}
}
}
}
}
}
}
}
}
void DisableFlashMoviesRecursively(IHTMLDocument2* pDoc)
{
CComQIPtr<IHTMLDOCUMENT2 &IID_IHTMLDocument2,> spHTML(pDoc);
if (spHTML)
{
// Disable flash for the this document
DisableFlashMoviesHelper(spHTML); // Disable flash for any embedded documents
CComPtr<IHTMLELEMENTCOLLECTION> spAll;
HRESULT hr = spHTML->get_all(&spAll);
if (SUCCEEDED(hr) && spAll)
{
long nCnt = 0;
HRESULT hr=spAll->get_length(&nCnt);
if (SUCCEEDED(hr)&& nCnt >0)
{ for (long i = 0; i < nCnt; i++)
{
CComVariant varIdx;
V_VT(&varIdx) = VT_I4;
V_I4(&varIdx) = i; CComPtr<IDISPATCH> spElemDisp;
hr = spAll->item(varIdx, varIdx, &spElemDisp);
if (SUCCEEDED(hr) && spElemDisp)
{
CComQIPtr<IHTMLFRAMEBASE2 &IID_IHTMLFrameBase2,>
spFrame(spElemDisp);
if (spFrame)
{
// This is a frame or iframe element.
// Disable flash in its document.
CComPtr<IHTMLWINDOW2> spWin;
hr = spFrame->get_contentWindow(&spWin);
if (SUCCEEDED(hr) && spWin)
{
CComPtr<IHTMLDOCUMENT2> spDoc;
hr = spWin->get_document(&spDoc);
if (SUCCEEDED(hr) && spDoc)
{
DisableFlashMoviesRecursively(spDoc);
}
}
}
}
}
}
}
}
}void CPub::DisableFlashMovies()
{
ATLASSERT(m_spWebBrowser2);
if (!m_spWebBrowser2)
return; CComPtr<IDISPATCH> spDisp;
HRESULT hr = m_spWebBrowser2->get_Document(&spDisp);
if (SUCCEEDED(hr) && spDisp)
{
CComQIPtr<IHTMLDOCUMENT2 &IID_IHTMLDocument2,> spHTML(spDisp);
if (spHTML)
DisableFlashMoviesRecursively(spHTML);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货