首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么利用IHTMLDocument2获取<object classid=.></object>中的数据

2014-04-28 
如何利用IHTMLDocument2获取***中的数据?如题,如何利用IHTMLDocument2获取

如何利用IHTMLDocument2获取<object classid=...>***</object>中的数据?
如题,如何利用IHTMLDocument2获取<object classid=...>***</object>中的数据?
我需要获得object后面所有的数据,对数据进行分析


[解决办法]

C/C++ code
//获得ActiveX控件接口,注意ActiveX控件接口和HTML对象元素接口不是同一个接口,你不能直接使用IHtmlObjectElement接口来访问控件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;}有了Active控件的接口,下面的工作就简单多了,举例来说,如果要访问控件的指定名字的无参数属性,只需简单的调用IDispatch接口的GetIDsOfNames获得属性的DispID,然后调用Invoke方法取得属性//获得控件属性,通过名字访问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;}
[解决办法]
额...检查下头文件看看,实在不行只能换种方法.

另外种方法
CComPtr <IHTMLDocument2> pHTMLDoc2; 
pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc2); 

CComPtr <IHTMLElementCollection> pAllElements; 
HRESULT hr = pHTMLDoc2->get_all(&pAllElements);

IHTMLElementCollection用它的tags方法拿到object集合的IDispath
再从IDispath中QueryInterface得到另外一个IHTMLElementCollection
再继续就应该可以了.

热点排行