怎么通过IHTMLElement接口得到当前网页上EMBED flash的url地址?

tinytot 2003-02-28 10:07:58
谢谢. 我试了好多都不成.
...全文
301 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tinytot 2003-03-03
  • 打赏
  • 举报
回复
HRESULT GetIDsOfNames(
REFIID riid,
OLECHAR FAR* FAR* rgszNames,
unsigned int cNames,
LCID lcid,
DISPID FAR*
rgDispId );

要想通过上面的函数得到控件属性(一个EMBED flash)的DispID, 那参数rgszNames我应该用什么? 也就flash控件的名字是什么?
蒋晟 2003-03-03
  • 打赏
  • 举报
回复
http://www.csdn.net/Develop/read_article.asp?id=14752
蒋晟 2003-03-01
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1335/1335633.xml?temp=.3264734
蒋晟 2003-03-01
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/934/934618.xml?temp=.5816004
88dd 2003-03-01
  • 打赏
  • 举报
回复
<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 测试通过
测试通过
cheng_young 2003-02-28
  • 打赏
  • 举报
回复
得不到IHTMLEmbedElement接口, 可能是因为网页上没用EMBED 标记, 而用的是OBJECT
将网页上OBJECT改成EMBED 标记就可得到IHTMLEmbedElement接口

tinytot 2003-02-28
  • 打赏
  • 举报
回复
2 cheng_young(古道西风瘦马) :
通过IHTMLObjectElement接口怎么获得EMBED的url?
88dd 2003-02-28
  • 打赏
  • 举报
回复
试试IDispatchEx
cheng_young 2003-02-28
  • 打赏
  • 举报
回复
试试IHTMLObjectElement
tinytot 2003-02-28
  • 打赏
  • 举报
回复
我也知道,但是这个不行, 因为我通过IDISPATCH的QueryInterface来查询IHTMLEmbedElement的接口, 总是返回空值, 反而是IHTMLBodyElement,IHTMLControlElement都能取到.
cheng_young 2003-02-28
  • 打赏
  • 举报
回复
IHTMLEmbedElement Interface's src
cheng_young 2003-02-28
  • 打赏
  • 举报
回复
用这个:
<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>
tinytot 2003-02-28
  • 打赏
  • 举报
回复
<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接口.

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧