• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            把握命運(yùn),追逐夢(mèng)想

            對(duì)自己所做的事要有興趣,同時(shí)還要能夠堅(jiān)持不懈

            統(tǒng)計(jì)

            留言簿(1)

            閱讀排行榜

            評(píng)論排行榜

            整理一下網(wǎng)上的那個(gè)vc遍歷網(wǎng)頁(yè)的程序

            #include <stdio.h>
            #include 
            <tchar.h>
            #include
            <iostream>
            #include
            <exdisp.h>
            #include 
            <atlbase.h>  
            #include 
            <atlcom.h>
            #include
            <mshtml.h>

            using namespace std;

            void EnumIE( void );
            void EnumFrame( IHTMLDocument2 * pIHTMLDocument2 ); 
            void EnumForm ( IHTMLDocument2 * pIHTMLDocument2 ); 



            int _tmain(int argc, _TCHAR* argv[])
            {
                wcout.imbue(locale(
            "chs")); 

                ::CoInitialize(NULL);   
            //初始化COM 
               
                EnumIE();               
            //枚舉瀏覽器    
               
                ::CoUninitialize();     
            //釋放COM
               
                wcout
            <<_T("======完成======")<<endl;   
                getchar();              
            //等待回車(chē)    
               
                
            return 0;  

            }


            void EnumIE( void )   
            {   
                wcout
            <<_T("開(kāi)始掃描系統(tǒng)中正在運(yùn)行的瀏覽器實(shí)例")<<endl;   
               
                CComPtr
            <IShellWindows> spShellWin;   
                HRESULT hr 
            = spShellWin.CoCreateInstance( CLSID_ShellWindows );   
                
            if ( FAILED ( hr ) )   
                
            {   
                    wcout 
            <<_T("獲取 IShellWindows 接口錯(cuò)誤")<<endl;   
                    
            return;   
                }
               
               
                
            long nCount = 0;        // 取得瀏覽器實(shí)例個(gè)數(shù)(Explorer 和 IExplorer)    
                spShellWin->get_Count( &nCount );   
                
            if0 == nCount )   
                
            {   
                    wcout
            <<_T("沒(méi)有在運(yùn)行著的瀏覽器")<<endl;   
                    
            return;   
                }
               
               
                
            for(int i=0; i<nCount; i++)
                
            {  
                    CComPtr
            <IDispatch > spDispIE;   
                    hr
            =spShellWin->Item(CComVariant( (long)i ), &spDispIE );   
                    
            if ( FAILED ( hr ) )    continue;   
               
                    CComQIPtr
            <IWebBrowser2> spBrowser = spDispIE;   
                    
            if ( !spBrowser )       continue;   
               
                    CComPtr 
            <IDispatch> spDispDoc;   
                    hr 
            = spBrowser->get_Document( &spDispDoc );   
                    
            if ( FAILED ( hr ) )    continue;   
               
                    CComQIPtr
            < IHTMLDocument2 > spDocument2 = spDispDoc;   
                    
            if ( !spDocument2 )     continue;   
               
                    
            // 程序運(yùn)行到此,已經(jīng)找到了 IHTMLDocument2 的接口指針    
               
                    
            // 刪除下行語(yǔ)句的注釋?zhuān)褳g覽器的背景改變看看    
                    
            // spDocument2->put_bgColor( CComVariant( "green" ) );    
                       
                    EnumForm( spDocument2 );        
            //枚舉所有的表單    
                }
               
            }
               
               
            void EnumFrame( IHTMLDocument2 * pIHTMLDocument2 )   
            {   
                
            if ( !pIHTMLDocument2 ) return;   
               
                HRESULT hr;   
               
                CComPtr
            < IHTMLFramesCollection2 > spFramesCollection2;   
                pIHTMLDocument2
            ->get_frames( &spFramesCollection2 ); //取得框架frame的集合    
               
                
            long nFrameCount=0;             //取得子框架個(gè)數(shù)    
                hr = spFramesCollection2->get_length( &nFrameCount );   
                
            if ( FAILED ( hr ) || 0 == nFrameCount )    return;   
               
                
            for(long i=0; i<nFrameCount;  i++
                
            {
                    CComVariant vDispWin2;
                    hr
            =spFramesCollection2->item( &CComVariant(i), &vDispWin2 );//取得子框架的自動(dòng)化接口" vDispWin2; CComVariant   
                    if ( FAILED ( hr ) )    continue;   
               
                    CComQIPtr
            < IHTMLWindow2 > spWin2 = vDispWin2.pdispVal;   
                    
            if!spWin2 )   continue;   //取得子框架的 IHTMLWindow2 接口    
               
                    CComPtr 
            < IHTMLDocument2 > spDoc2;   
                    spWin2
            ->get_document( &spDoc2 ); //取得字框架的 IHTMLDocument2 接口    
               
                    EnumForm( spDoc2 );         
            //遞歸枚舉當(dāng)前子框架 IHTMLDocument2 上的表單form    
                }
               
            }
               
               
            void EnumForm( IHTMLDocument2 * pIHTMLDocument2 )   
            {   
                
            if!pIHTMLDocument2 )  return;   
               
                EnumFrame( pIHTMLDocument2 );   
            //遞歸枚舉當(dāng)前 IHTMLDocument2 上的子框架fram    
               
                HRESULT hr;   
                CComBSTR bstrTitle;   
                pIHTMLDocument2
            ->get_title( &bstrTitle );    //取得文檔標(biāo)題    
               
                USES_CONVERSION;   
                wcout 
            << _T("===================="<< endl;   
                wcout 
            << _T("開(kāi)始枚舉“"<< OLE2CT( bstrTitle ) << _T("”的表單"<< endl;   
                wcout 
            << _T("===================="<< endl;   
               
                CComQIPtr
            < IHTMLElementCollection > spElementCollection;   
                hr 
            = pIHTMLDocument2->get_forms( &spElementCollection ); //取得表單集合    
                if ( FAILED( hr ) )   
                
            {   
                    wcout 
            << _T("獲取表單的集合 IHTMLElementCollection 錯(cuò)誤"<< endl;   
                    
            return;   
                }
               
               
                
            long nFormCount=0;              //取得表單數(shù)目    
                hr = spElementCollection->get_length( &nFormCount );   
                
            if ( FAILED( hr ) )   
                
            {   
                    wcout 
            << _T("獲取表單數(shù)目錯(cuò)誤"<< endl;   
                    
            return;   
                }
               
                   
                
            for(long i=0; i<nFormCount;  i++)//"" 項(xiàng)表單 i 取得第 ;
                {
                
                    IDispatch  
            *pDisp=NULL;
                     hr
            = spElementCollection->item( CComVariant( i ), CComVariant(i), &pDisp );       
                    
            if ( FAILED( hr ) )     continue;   
               
                    CComQIPtr
            < IHTMLFormElement > spFormElement = pDisp;   
                    pDisp
            ->Release();   
               
                    
            long nElemCount=0;          //取得表單中 域 的數(shù)目    
                    hr = spFormElement->get_length( &nElemCount );   
                    
            if ( FAILED( hr ) )     continue;   
               
                    
            for(long j=0; j<nElemCount;  j++)
                    

                        CComDispatchDriver spInputElement; 
            //  j ; 

                        hr
            =spFormElement->item( CComVariant( j ), CComVariant(), &spInputElement );   
                    
                        
            if ( FAILED( hr ) ) continue;   //取得第 項(xiàng)表單域
               
                        CComVariant vName,vVal,vType;       
            //取得表單域的 名,值,類(lèi)型    
                        hr = spInputElement.GetPropertyByName( L"name"&vName );   
                        
            if( FAILED( hr ) )  continue;   
                        hr 
            = spInputElement.GetPropertyByName( L"value"&vVal );   
                        
            if( FAILED( hr ) )  continue;   
                        hr 
            = spInputElement.GetPropertyByName( L"type"&vType );   
                        
            if( FAILED( hr ) )  continue;   
               
                        LPCTSTR lpName 
            = vName.bstrVal?   
                                OLE2CT( vName.bstrVal ) : _T(
            "NULL");   //未知域名    
                        LPCTSTR lpVal  = vVal.bstrVal?   
                                OLE2CT( vVal.bstrVal  ) : _T(
            "NULL");   //空值,未輸入    
                        LPCTSTR lpType = vType.bstrVal?   
                                OLE2CT( vType.bstrVal ) : _T(
            "NULL");   //未知類(lèi)型    
               
                        wcout 
            << _T("["<< lpType << _T("");   
                        wcout 
            << lpName << _T(" = "<< lpVal << endl;   
                    }
               
                    
            //想提交這個(gè)表單嗎?刪除下面語(yǔ)句的注釋吧    
                    
            //pForm->submit();    
                }
               
            }
              


            posted on 2009-08-10 17:40 把握命運(yùn) 閱讀(884) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            精品视频久久久久| 亚洲午夜久久久久久久久电影网| 久久久久久a亚洲欧洲aⅴ| 久久影院亚洲一区| 久久国产高清一区二区三区| 国产精品久久影院| 久久久久久久综合狠狠综合| 国内精品伊人久久久久网站| 国产精品成人无码久久久久久| 久久久久亚洲AV成人网人人网站| 成人久久综合网| 久久久久亚洲av无码专区导航| 三级韩国一区久久二区综合| 内射无码专区久久亚洲| 久久r热这里有精品视频| 日本免费久久久久久久网站| 久久精品成人免费看| 精品久久久久久久久久中文字幕| 久久综合九色综合欧美狠狠| 2021国产成人精品久久| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久国产视屏| 色综合久久综精品| 国产激情久久久久影院老熟女| 久久这里有精品视频| 午夜精品久久久久久久无码| 一本色道久久综合| 99久久久精品免费观看国产| 国产精品热久久毛片| 三级三级久久三级久久| 99久久精品费精品国产一区二区 | 久久久久亚洲AV无码麻豆| 国产欧美久久一区二区| 久久久久亚洲精品男人的天堂| 热久久国产欧美一区二区精品| 亚洲AV日韩精品久久久久| 久久久精品2019免费观看| 热久久国产欧美一区二区精品| 国产精品久久久天天影视| 久久精品无码一区二区三区免费| 久久99久久99小草精品免视看|