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();   

                    }  
                }  
            }  
        }  
    }   

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Postman使用详解

    一、Postman背景介绍用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网页基本信息,它还可以发送几乎所有类型的HTTP请求!Postman在发送网络HTTP请求方面可以说是Chrome插件类产品中的代…

  • 百度最新面试题集锦

    百度最新面试题集锦

    2021年12月14日
  • 太原智慧小区有哪些_智慧城市规划

    太原智慧小区有哪些_智慧城市规划经过3个月的紧张施工,至7月初,位于龙城大街的“首开·国风上观”小区成为我市首个实现电、水、热采集“多表合一”的智能化小区。记者从国网太原供电公司了解到,该试点小区住户达3524户,是目前国内“多表合一”改造试点中规模较大的,也是我省试点中规模最大的小区。今年,国家发改委、国家能源局、工信部曾联合出台《关于推进“互联网+”智慧能源发展的指导意见》,其中…

  • dump 分析工具_一键全扒网站工具

    dump 分析工具_一键全扒网站工具ProcDumpProcDump是一个命令行实用程序,其主要目的是监视应用程序的CPU峰值,并在峰值期间生成崩溃转储,管理员或开发人员可以使用它来确定峰值的原因。ProcDump还包括挂起窗口监视(使用与Windows和任务管理器使用的窗口挂起相同的定义)、未处理的异常监视,并且可以根据系统性能计数器的值生成转储。它还可以作为一个通用的进程转储实用程序,您可以将其嵌入到其他脚本中。官网DebugDiag调试诊断工具(DebugDiag)旨在帮助解决任何用户模式进程中的挂起、性能缓慢、内存泄漏

  • 实现textarea内换行

    为什么会出现这个问题呢?是因为我在做自己个人网站的留言板时,我想预设好textarea的值,像这样,让用户输入的时候直接另起一行!不墨墨唧唧了,直接告诉你们,下面两种方法是没有用的。1.企图在html里面加上&amp;lt;br/&amp;gt;&amp;lt;textareacols=&quot;15&quot;rows=&quot;8&quot;id=&quot;Txt&quot;&amp;gt;To

  • 【Android 应用开发】GitHub 优秀的 Android 开源项目

    【Android 应用开发】GitHub 优秀的 Android 开源项目文章转载自: http://blog.csdn.net/zhixiang2010/article/details/18032871 作者: Elysee2014主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar及其他如Dialog、Toast、Ed

发表回复

您的电子邮箱地址不会被公开。

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