mshtml一些用法

获取某个tags集合   CStringallPointData;             IDispatch*pDisp=webbrowser.get_Document();   IHTMLDocument2*pDocument;    IHTMLElementCollection*pCollection;

大家好,又见面了,我是你们的朋友全栈君。

获取某个tags集合    

 CString allPointData;     

              

    IDispatch *pDisp = webbrowser.get_Document();  

    IHTMLDocument2* pDocument;   

    IHTMLElementCollection* pCollection;  

   

    pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDocument);      

    HRESULT hr;  

    hr = pDocument->get_all(&pCollection);  


//hr=pDocument->get_scripts(&pCollection);


VARIANT varID;  


varID = StringToVariant((CString)”TABLE”);      


pCollection->tags(varID,&pDisp);

    IHTMLElementCollection* Collection;  


pDisp->QueryInterface(&Collection);


long celem;  

Collection->get_length(&celem);

IHTMLScriptElement用法

  CString allPointData;     
              
    IDispatch *pDisp = webbrowser.get_Document();  
    IHTMLDocument2* pDocument;   
    IHTMLElementCollection* pCollection;  
   
    pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDocument);      
    HRESULT hr;  
    hr = pDocument->get_all(&pCollection);  
//hr=pDocument->get_scripts(&pCollection);
//VARIANT varID;  
// varID = StringToVariant((CString)”TABLE”);      
//pCollection->tags(varID,&pDisp);
    //IHTMLElementCollection* Collection;  
//pDisp->QueryInterface(&Collection);
long celem;  
//Collection->get_length(&celem);

    if( hr == S_OK )  
    {  
       
        hr = pCollection->get_length(&celem);   //得到所有节点的个数用以遍历  
        if( hr == S_OK )  
        {  
            VARIANT varIndex, var;  
            for ( int i = 0; i < celem; i++ )  
            {  
                varIndex.vt = VT_UINT;  
                varIndex.lVal = i;  
                VariantInit(&var);  
                hr = pCollection->item(varIndex,var,&pDisp);  
                if ( hr == S_OK )  
                {   
                    //IHTMLElement *pElement; 
IHTMLScriptElement *pScriptElement;
                    hr = pDisp->QueryInterface(IID_IHTMLScriptElement,(void**)&pScriptElement);  
                    if ( hr == S_OK )  
                    {  
                        CString pointData,id;  
                        BSTR bs= SysAllocString(L””);
                        //pElement->get_id(&bs); 
//pElement->get_className(&bs);
pScriptElement->get_src(&bs);
                        id = CString(bs);  
                        if ( id == _T(“d:\ni.js”))  
                        {  
                            //IHTMLInputElement* input;  
                            //hr = pDisp->QueryInterface(IID_IHTMLInputElement,(void**)&input);  
                            //input->get_value(&bs);   //将id为LanLonPoints中的value值赋给bs  
                            //pointData = CString(bs);  
                            //allPointData = pointData;
VARIANT index;   
                             VARIANT varID;   
                             V_VT(&index) = VT_I4;   
                             V_I4(&index) = 1;
                             CString strInfo;
IHTMLTable * pTable;  // 获得表格元素接口
        hr = pDisp->QueryInterface(IID_IHTMLTable,(void **)&pTable ); 
        if ( (hr == S_OK) && (pTable != NULL) )   
        {   
            IHTMLElementCollection* pColl2 = NULL;   
pTable->get_rows(&pColl2); // 获取表格行   
            IDispatch* pDisp2;   
            V_I4(&index) = 1;   
            hr = pColl2->item( index,index, &pDisp2 );                 // 获取第2行位置   
            if ( (hr == S_OK) && (pDisp2 != NULL) )   
            {   
                IHTMLTableRow* pRow;                                   // 获取行元素接口   
                hr = pDisp2->QueryInterface(IID_IHTMLTableRow,(void **)&pRow);   
                if( (hr == S_OK) && (pRow != NULL) )   
                {   
                    IHTMLElementCollection* pColl3 = NULL;   
                    pRow->get_cells(&pColl3);                          // 获取格子元素   
                    IDispatch* pDisp3;   
                    V_I4(&index) = 1;     
                    hr = pColl3->item( index,index, &pDisp3 );         // 获取第2行第2格元素   
                    if ( (hr == S_OK) && (pDisp2 != NULL) )   
                    {   
                        IHTMLElement* pElem;                           // 获取元素接口   
                        hr = pDisp3->QueryInterface(IID_IHTMLElement,(void **)&pElem);   
                        if( hr == S_OK )   
                        {   
                            BSTR bstr = SysAllocString(L””);   
                            pElem->get_innerText(&bstr);               // 获取该表格元素的文本信息   
                            strInfo =bstr;   
//MessageBoxExA(NULL,strInfo,NULL,NULL,NULL);
                            pElem->Release();   
                        }   
                        pDisp3->Release();   
                    }   
                    pRow->Release();   
                }   
                pDisp2->Release();   
            }   
            pTable->Release();   
        }   
        pDisp->Release();   

                    }  
                }  
            }  
        }  
    }   

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127038.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月8日 下午11:40
下一篇 2022年4月8日 下午11:40


相关推荐

  • 小龙虾OpenClaw本地部署方法

    小龙虾OpenClaw本地部署方法

    2026年3月12日
    2
  • Jasypt 加密-引言「建议收藏」

    Jasypt 加密-引言「建议收藏」Jasypt也即JavaSimplifiedEncryption是Sourceforge.net上的一个开源项目。在当地时间11月23号的通告中,Jasypt1.4的新特征包括:加密属性文件(encryptablepropertiesfiles)、SpringFramework集成、加密Hibernate数据源配置、新的命令行工具、URL加密的Apachewicket集成以及升级文档。根据Jasypt文档,该技术可用于加密任务与应用程序,例如加密密码、敏感信息和数据通信、创建完整检查数据

    2026年4月14日
    12
  • 图形推理1000题pdf_小学三年级逻辑推理题,学霸1分钟能做对4题,最后一题难坏家长…[通俗易懂]

    图形推理1000题pdf_小学三年级逻辑推理题,学霸1分钟能做对4题,最后一题难坏家长…[通俗易懂]逻辑推理是考察学生数学逻辑推理能力的重要方法,也是为了进入高年级以后锻炼解析几何和证明题的基础条件之一,一般小学生逻辑推理好的数学成绩都不会差,能够锻炼学生的发散思维能力,帮助快速的找出解题思路。不管是逻辑推理题还是证明题,都是让学生由已知条件解析出未知条件,已知条件里边有很多内在的关联信息,但是需要学生仔细观察,如果找不出内在的关系,这道题十有八九是解不出来的,这种题型不仅学生要善于分析还要懂得…

    2025年10月14日
    7
  • C++ STL map集合的使用「建议收藏」

    C++ STL map集合的使用「建议收藏」有时需要根据索引找到对应的元素,像键值对一样的查找,并对这些元素进行操作。可以同故宫调用STL里面的map来解决这个问题。

    2022年5月29日
    48
  • 在国内使用Gemini2.5的两种方法(带思维链)

    在国内使用Gemini2.5的两种方法(带思维链)

    2026年3月16日
    2
  • 安卓项目实战之:Android常用的5种加密方式

    安卓项目实战之:Android常用的5种加密方式前言按加密结果是否可以被解密分为:1,不可逆:MD5(Message-Digest消息摘要):不可逆,长度固定(32位),容易计算,仅一字节只差加密结果都会有很大区别通常情况下为了让加密过程变得不可预测,我们会进行加盐操作。SHA:安全散列算法,数字签名工具,长度比MD5要长,所以更安全,但是加密的效率要比MD5慢一些.2,可逆:按秘钥数量和加密规则分为:1,对称加密:即通过key…

    2022年5月17日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号