怎么通过IHTMLElement接口得到当前网页上EMBED flash的url地址? 谢谢. 我试了好多都不成. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 IHTMLEmbedElement Interface's src 我也知道,但是这个不行, 因为我通过IDISPATCH的QueryInterface来查询IHTMLEmbedElement的接口, 总是返回空值, 反而是IHTMLBodyElement,IHTMLControlElement都能取到. 2 cheng_young(古道西风瘦马) : 通过IHTMLObjectElement接口怎么获得EMBED的url? 得不到IHTMLEmbedElement接口, 可能是因为网页上没用EMBED 标记, 而用的是OBJECT将网页上OBJECT改成EMBED 标记就可得到IHTMLEmbedElement接口 <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH="400" HEIGHT="300"> <PARAM NAME=movie VALUE="http://ad4.sina.com.cn/gzh/drinkpop.swf"> <PARAM NAME=quality VALUE=high> <EMBED src="http://ad4.sina.com.cn/gzh/drinkpop.swf" quality=high WIDTH="400" HEIGHT="300" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED></OBJECT>上面是一个最简单的EMBED flash的例子, 既有OBJECT也有EMBED, 但是就是得不到IHTMLEmbedElement接口. 用这个:<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH="400" HEIGHT="300"> <PARAM NAME=movie VALUE="http://ad4.sina.com.cn/gzh/drinkpop.swf"> <PARAM NAME=quality VALUE=high> </OBJECT><EMBED src="http://ad4.sina.com.cn/gzh/drinkpop.swf" quality=high WIDTH="400" HEIGHT="300" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED> <html><head></head><body onload="Init()"><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH="400" HEIGHT="300" ID="Shockwaveflash1" > <PARAM NAME=movie VALUE="http://ad4.sina.com.cn/gzh/drinkpop.swf"> <PARAM NAME=quality VALUE=high> <EMBED src="http://ad4.sina.com.cn/gzh/drinkpop.swf" quality=high WIDTH="400" HEIGHT="300" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED></OBJECT></body><script>function Init(){ var obj = new ActiveXObject( "ComCom.EmbededObject" ); obj.GetMovie( Shockwaveflash1 );}</script></html>STDMETHODIMP CEmbededObject::GetMovie(IDispatch* pDispatch){ // TODO: Add your implementation code here IDispatchEx* pDispatchEx = (IDispatchEx*) pDispatch; VARIANT var; BSTR bstrName( L"Movie" ); DISPID dispid; IDispatchEx *pdex = pDispatchEx; DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0}; // Assign to pdex and bstrName if (SUCCEEDED(pdex->GetDispID(bstrName, fdexNameCaseSensitive, &dispid))) { pdex->InvokeEx(dispid, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &dispparamsNoArgs, &var, NULL, NULL); } return S_OK;}Visual studio.NET/ie6 测试通过测试通过 http://expert.csdn.net/Expert/topic/934/934618.xml?temp=.5816004 http://expert.csdn.net/Expert/topic/1335/1335633.xml?temp=.3264734 HRESULT GetIDsOfNames( REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgDispId );要想通过上面的函数得到控件属性(一个EMBED flash)的DispID, 那参数rgszNames我应该用什么? 也就flash控件的名字是什么? http://www.csdn.net/Develop/read_article.asp?id=14752 MFC combobox 问题 如何使list控件拥有行标题了 如何给group box加上滚动条? 怎样使用单选框? [讨论] 如何使用API实现RICHEDIT语法着色 CreateFile 打开文件个数有限制吗? 再线等待。。。打印程序 进程间能共享object吗?比如CStringArray,HDC等 请教MFC多文档如何显示出自定义的空文档视图 在执行ShellExecute()启动Outlook,能否自动粘上某个文件作为附件??(Winzip8.0就实现这个功能) 高分,难题,请教 MessageBox() 的 BUG 吗?
通过IHTMLObjectElement接口怎么获得EMBED的url?
将网页上OBJECT改成EMBED 标记就可得到IHTMLEmbedElement接口
<PARAM NAME=movie VALUE="http://ad4.sina.com.cn/gzh/drinkpop.swf"> <PARAM NAME=quality VALUE=high>
<EMBED src="http://ad4.sina.com.cn/gzh/drinkpop.swf" quality=high WIDTH="400" HEIGHT="300" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED>
</OBJECT>上面是一个最简单的EMBED flash的例子, 既有OBJECT也有EMBED, 但是就是得不到IHTMLEmbedElement接口.
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH="400" HEIGHT="300">
<PARAM NAME=movie VALUE="http://ad4.sina.com.cn/gzh/drinkpop.swf"> <PARAM NAME=quality VALUE=high>
</OBJECT><EMBED src="http://ad4.sina.com.cn/gzh/drinkpop.swf" quality=high WIDTH="400" HEIGHT="300" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED>
<head>
</head>
<body onload="Init()">
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" WIDTH="400" HEIGHT="300" ID="Shockwaveflash1" >
<PARAM NAME=movie VALUE="http://ad4.sina.com.cn/gzh/drinkpop.swf"> <PARAM NAME=quality VALUE=high>
<EMBED src="http://ad4.sina.com.cn/gzh/drinkpop.swf" quality=high WIDTH="400" HEIGHT="300" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED>
</OBJECT>
</body><script>
function Init()
{
var obj = new ActiveXObject( "ComCom.EmbededObject" );
obj.GetMovie( Shockwaveflash1 );
}
</script>
</html>
STDMETHODIMP CEmbededObject::GetMovie(IDispatch* pDispatch)
{
// TODO: Add your implementation code here IDispatchEx* pDispatchEx = (IDispatchEx*) pDispatch; VARIANT var;
BSTR bstrName( L"Movie" );
DISPID dispid;
IDispatchEx *pdex = pDispatchEx;
DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0}; // Assign to pdex and bstrName
if (SUCCEEDED(pdex->GetDispID(bstrName, fdexNameCaseSensitive, &dispid)))
{
pdex->InvokeEx(dispid, LOCALE_USER_DEFAULT,
DISPATCH_PROPERTYGET, &dispparamsNoArgs,
&var, NULL, NULL);
} return S_OK;
}Visual studio.NET/ie6 测试通过
测试通过
REFIID riid,
OLECHAR FAR* FAR* rgszNames,
unsigned int cNames,
LCID lcid,
DISPID FAR*
rgDispId );要想通过上面的函数得到控件属性(一个EMBED flash)的DispID, 那参数rgszNames我应该用什么? 也就flash控件的名字是什么?