社区
HTML/XML
帖子详情
怎样从获得的IHtmlDocument2的接口中进一步获得flash的地址...(jiangsheng能帮忙吗)
zmxjh
2002-08-12 05:39:57
我用elementFromPoint方法获得了flash对像的接口,再怎么进一步获得这个flash对像的地址呢?如
<PARAM NAME=movie VALUE="/images/ad/winsunlight_banner.swf">
中 VALUE 的值?
...全文
328
7
打赏
收藏
怎样从获得的IHtmlDocument2的接口中进一步获得flash的地址...(jiangsheng能帮忙吗)
我用elementFromPoint方法获得了flash对像的接口,再怎么进一步获得这个flash对像的地址呢?如 中 VALUE 的值?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
蒋晟
2002-08-16
打赏
举报
回复
由于GetIDsOfNames这个操作很慢,推荐缓存得到的DispID。
孙亖
2002-08-15
打赏
举报
回复
geifeng
zmxjh
2002-08-15
打赏
举报
回复
我想jiangsheng给了我想要的。
招RD和QA
2002-08-13
打赏
举报
回复
gzer
蒋晟
2002-08-13
打赏
举报
回复
HRESULT CDHtmlDialog::GetElementInterface(LPCTSTR szElementId, REFIID riid, void **ppvObj)
{
HRESULT hr = E_NOINTERFACE;
*ppvObj = NULL;
CComPtr<IDispatch> spdispElem;
hr = GetElement(szElementId, &spdispElem);
if (spdispElem)
hr = spdispElem->QueryInterface(riid, ppvObj);
return hr;
}
蒋晟
2002-08-13
打赏
举报
回复
From MFC source:
HRESULT CDHtmlDialog::GetElement(LPCTSTR szElementId, IDispatch **ppdisp,
BOOL *pbCollection /*= NULL*/)
{
CComPtr<IHTMLElementCollection> sphtmlAll;
CComPtr<IHTMLElementCollection> sphtmlColl;
CComPtr<IDispatch> spdispElem;
CComVariant varName;
CComVariant varIndex;
HRESULT hr = S_OK;
CComPtr<IHTMLDocument2> sphtmlDoc;
USES_CONVERSION;
*ppdisp = NULL;
if (pbCollection)
*pbCollection = FALSE;
hr = GetDHtmlDocument(&sphtmlDoc);
if (sphtmlDoc == NULL)
return hr;
varName.vt = VT_BSTR;
varName.bstrVal = T2BSTR(szElementId);
if (!varName.bstrVal)
{
hr = E_OUTOFMEMORY;
goto Error;
}
hr = sphtmlDoc->get_all(&sphtmlAll);
if (sphtmlAll == NULL)
goto Error;
hr = sphtmlAll->item(varName, varIndex, &spdispElem);
if (spdispElem == NULL)
{
hr = E_NOINTERFACE;
goto Error;
}
spdispElem->QueryInterface(__uuidof(IHTMLElementCollection), (void **) &sphtmlColl);
if (sphtmlColl)
{
if (pbCollection)
*pbCollection = TRUE;
#ifdef _DEBUG
else
{
TRACE(traceHtml, 0, "Warning: duplicate IDs or NAMEs.\n");
ATLASSERT(FALSE);
}
#endif
}
Error:
if (SUCCEEDED(hr))
{
*ppdisp = spdispElem;
if (spdispElem)
(*ppdisp)->AddRef();
}
return hr;
}
HRESULT CDHtmlDialog::GetElement(LPCTSTR szElementId, IHTMLElement **pphtmlElement)
{
return GetElementInterface(szElementId, __uuidof(IHTMLElement), (void **) pphtmlElement);
}
HRESULT CDHtmlDialog::GetControlDispatch(LPCTSTR szId, IDispatch **ppdisp)
{
HRESULT hr = S_OK;
CComPtr<IDispatch> spdispElem;
hr = GetElement(szId, &spdispElem);
if (spdispElem)
{
CComPtr<IHTMLObjectElement> sphtmlObj;
hr = spdispElem.QueryInterface(&sphtmlObj);
if (sphtmlObj)
{
spdispElem.Release();
hr = sphtmlObj->get_object(ppdisp);
}
}
return hr;
}
VARIANT CDHtmlDialog::GetControlProperty(IDispatch *pdispControl, DISPID dispid)
{
VARIANT varRet;
varRet.vt = VT_EMPTY;
if (pdispControl)
{
DISPPARAMS dispparamsNoArgs = { NULL, NULL, 0, 0 };
pdispControl->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT,
DISPATCH_PROPERTYGET, &dispparamsNoArgs, &varRet, NULL, NULL);
}
return varRet;
}
VARIANT CDHtmlDialog::GetControlProperty(LPCTSTR szId, DISPID dispid)
{
CComPtr<IDispatch> spdispElem;
GetControlDispatch(szId, &spdispElem);
return GetControlProperty(spdispElem, dispid);
}
VARIANT CDHtmlDialog::GetControlProperty(LPCTSTR szId, LPCTSTR szPropName)
{
CComVariant varEmpty;
CComPtr<IDispatch> spdispElem;
GetControlDispatch(szId, &spdispElem);
if (!spdispElem)
return varEmpty;
DISPID dispid;
USES_CONVERSION;
LPOLESTR pPropName = (LPOLESTR)T2COLE(szPropName);
HRESULT hr = spdispElem->GetIDsOfNames(IID_NULL, &pPropName, 1, LOCALE_USER_DEFAULT, &dispid);
if (SUCCEEDED(hr))
return GetControlProperty(spdispElem, dispid);
return varEmpty;
}
void CDHtmlDialog::SetControlProperty(IDispatch *pdispControl, DISPID dispid, VARIANT *pVar)
{
if (pdispControl != NULL)
{
DISPPARAMS dispparams = {NULL, NULL, 1, 1};
dispparams.rgvarg = pVar;
DISPID dispidPut = DISPID_PROPERTYPUT;
dispparams.rgdispidNamedArgs = &dispidPut;
pdispControl->Invoke(dispid, IID_NULL,
LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT,
&dispparams, NULL, NULL, NULL);
}
}
void CDHtmlDialog::SetControlProperty(LPCTSTR szElementId, DISPID dispid, VARIANT *pVar)
{
CComPtr<IDispatch> spdispElem;
GetControlDispatch(szElementId, &spdispElem);
SetControlProperty(spdispElem, dispid, pVar);
}
void CDHtmlDialog::SetControlProperty(LPCTSTR szElementId, LPCTSTR szPropName, VARIANT *pVar)
{
CComPtr<IDispatch> spdispElem;
GetControlDispatch(szElementId, &spdispElem);
if (!spdispElem)
return;
DISPID dispid;
USES_CONVERSION;
LPOLESTR pPropName = (LPOLESTR)T2COLE(szPropName);
HRESULT hr = spdispElem->GetIDsOfNames(IID_NULL, &pPropName, 1, LOCALE_USER_DEFAULT, &dispid);
if (SUCCEEDED(hr))
SetControlProperty(spdispElem, dispid, pVar);
}
蒋晟
2002-08-13
打赏
举报
回复
方法1:使用IHTMLDOMNode及相关接口访问HTML文档节点模型
方法2:(你需要知道控件属性的DispID)手动调用IDispatch::Invoke方法
通过窗口句柄
获得
IWebBrowser2和I
HTML
Document
2
接口
通过窗口句柄
获得
IWebBrowser2和I
HTML
Document
2
接口
,里面是源代码,分享给大家
C#
获得
I
HTML
Document
2并且创建链接的单击事件
C#
获得
I
HTML
Document
2并且创建链接的单击事件
I
HTML
Document
3HookSrc.rar
I
HTML
Document
3HookSrc.rar I
HTML
Document
3HookSrc.rar I
HTML
Document
3HookSrc.rar
I
HTML
Document
2问题代码
I
HTML
Document
2问题代码
获取showModalDialog对话框
中
网页的I
HTML
Document
2对象
之前为这个头疼好久... 没办法获取showModalDialog对话框
中
网页的内容... ...然后传入I
HTML
Document
2对象的引用。源代码在此供大家参考 环境:VC++ 2008 注: GCC不可编译。原因:ms
html
.h文件编译错误
HTML/XML
3,055
社区成员
8,066
社区内容
发帖
与我相关
我的任务
HTML/XML
VC/MFC HTML/XML
复制链接
扫一扫
分享
社区描述
VC/MFC HTML/XML
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章