HTMLDocument问题请教 各位前辈,我是IE新手,以下问题请教: 有个网页通过JS加载了一个flash控件,我想用编程的方式实现其自动全屏播放。如何取得这个控件的指针?我试着用BHO获取ONREADYSTATECHANGE事件,但不成功。谢谢指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HttpWebRequestx和HttpWebResponse类 可以实现 通过响应可以读取Stream流 然后用XmlDocument进行解析提取控件 并进行赋值等操作 谢谢楼上两位,我对HttpWebRequestx和HttpWebResponse还很陌生。蒋老师,我现在拿到了IHTMLDocument2,如何继续获得IHTMLObjectElement::object呢? 查看 html 源码, 应该有 class 或者 id使用 document 的 getElementById 之类的找到她转换为 IHTMLObjectElement 类型再访问 object 属性就是了 谢谢楼上,网页中的控件是JS加载的,我看到JS文件里有classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" 。这个就是 IHTMLDocument3::getElementById里的参数吗? 不是那个是activex 的clsid<object id='aflashobject' clsid= .........>id='aflashobject' 里的 'aflshboject' 才是 IHTMLDocument3::getElementById('aflshboject')的参数 谢谢楼上,我操作的网页的ActiveX是JS加载的, ="<object codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0\" id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";它的ID 是个函数。我是用 DOCUMENTCOMPLETE 事件来查询控件的。请问该事件发生时JS加载完成了吗?谢谢指教 谢谢楼上,我用IHTMLDocument2获取IHTMLDocument3时编译通过,一运行IE就崩溃了。CComPtr<IDispatch> pDisp1;m_spWebBrowser->get_Document(&pDisp1);CComPtr <IHTMLDocument2> pHTMLDoc2; pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc2);CComPtr<IHTMLDocument3> pDoc3;HRESULT hr=pHTMLDoc2->QueryInterface(IID_IHTMLDocument3,(void**)&pDoc3);if(SUCCEEDED(hr)) MessageBox(NULL,L"加油",L"BHO",MB_OK);这是什么问题呀? 我用的XP+IE6+VS2008 前面是pDisp1,到第四行怎么就成了pDisp了。 谢谢楼上,确是你指出的问题。现在我能得到IHTMLElement,往下查询IHTMLObjectElementCComPtr<IHTMLObjectElement> objelem;hr=pElem->QueryInterface(&objelem);if(SUCCEEDED(hr)) MessageBox(NULL,L"加油",L"BHO",MB_OK);执行这几行IE又崩溃了。 忙活了一下午,我拿到的IHTMLElement指针竟是个NULL,我估计DOCUMENTCOMPLETE 事件发生时JS 还没有加载,下面是网页源码的两行<body onload="Init()"> <div id="flash_box"class="flash_bg">Init()是JS的入口函数各位前辈帮我看一下,我上面的理解对不对? 如果是这样,我应该再以那个事件为触发点呢? 谢谢楼上各位,我打算用hook来钩CoCreateInstance获得shockwave控件的指针了。遇到问题还要烦请各位前辈指教 不用那么复杂的hook在接收到DOCUMENTCOMPLETE 事件之后,用postmessage投递一个消息,这样就可以保证这个消息在onload="Init()"之后执行了。 这个问题我还没有解决。请问楼上,我在收到DOCUMENTCOMPLETE 事件之后,用postmessage能查询到flash控件接口吗?往下如何做,请提示一下 如果创建有窗口句柄的话,用postmessage投递一个消息,在这个消息中尝试查询接口 蒋老师,flash控件的文档网上很多。我现在的问题是:1. 要操作flash自动全屏,是通过修改属性来实现,还是接收事件再调用全屏函数?2. flash视频播放时,原画面是4:3的,初始比例变形为16:9 ,人都被增肥了。 怎样把画面恢复原比例?flash 提供了2个可视化按钮,比例切换和全屏切换。我不想人工操作,想搞个自动化。 我的建议,既然找到了flash的文档,就多看几遍,多试几次,自然就水到渠成了。 谢谢楼上,我看了几遍,确有进步。想在我想通过flash的方法 TSetProperty 修改属性,可是对这个命令的第一个参数不知道怎么填。 多线程问题,望各位大牛求解 刚刚整理:一步一步实现MFC扩展DLL中导出类和对话框 有哪位大侠懂VNC的显示原理吗?具体一点,非常感谢,非常急!!! 怎样在CDialog类中获得文档的指针 有关GetProcAddress的问题,请指教! 那有TAPI帮助下载? MFC的出路在哪里? 如何把智能连接的FILTER换成自己需要的(directshow) LoadImage一问? 请问为什么VS2013生成的MFC程序是这样的,怎么修改啊? MFC 接收短信乱码 再次求教ActiveX控件添加问题
可以实现 通过响应可以读取Stream流 然后用XmlDocument进行解析提取控件 并进行赋值等操作
使用 document 的 getElementById 之类的找到她
转换为 IHTMLObjectElement 类型
再访问 object 属性就是了
classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" 。这个就是 IHTMLDocument3::getElementById里的参数吗?
那个是activex 的clsid
<object id='aflashobject' clsid= .........>
id='aflashobject' 里的 'aflshboject' 才是 IHTMLDocument3::getElementById('aflshboject')的参数
谢谢指教
m_spWebBrowser->get_Document(&pDisp1);
CComPtr <IHTMLDocument2> pHTMLDoc2;
pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc2);
CComPtr<IHTMLDocument3> pDoc3;
HRESULT hr=pHTMLDoc2->QueryInterface(IID_IHTMLDocument3,(void**)&pDoc3);
if(SUCCEEDED(hr))
MessageBox(NULL,L"加油",L"BHO",MB_OK);这是什么问题呀? 我用的XP+IE6+VS2008
现在我能得到IHTMLElement,往下查询IHTMLObjectElementCComPtr<IHTMLObjectElement> objelem;
hr=pElem->QueryInterface(&objelem);
if(SUCCEEDED(hr)) MessageBox(NULL,L"加油",L"BHO",MB_OK);执行这几行IE又崩溃了。
<div id="flash_box"class="flash_bg">Init()是JS的入口函数各位前辈帮我看一下,我上面的理解对不对? 如果是这样,我应该再以那个事件为触发点呢?
这样就可以保证这个消息在onload="Init()"之后执行了。
怎样把画面恢复原比例?
flash 提供了2个可视化按钮,比例切换和全屏切换。我不想人工操作,想搞个自动化。