如何用代码实现点击网页上的某一个按钮

CSDN发个图真麻烦。。有几个问题想请教大家
1:网页上有一个EDIT编辑框,如何把一个字符串赋值给它,用findwindow么?但不太会用SPY。。囧
2:如何用代码实现点击网页上的一个按钮。
其实是这样滴,我想做一个批量注册账号的程序,除了用户名和验证码,其他都可以一样,我只需要在自己的对话框中添加一个EDIT用来输入验证码,一个按钮用来完成注册。求帮忙。。谢谢

作者: dahaiI0   发布时间: 2011-06-13

网页上很少用Windows控件 ,你不要打算这样搞,行不通的

作者: simoreg   发布时间: 2011-06-13

引用 1 楼 simoreg 的回复:
网页上很少用Windows控件 ,你不要打算这样搞,行不通的

以前没玩过这个,仅凭自己微弱的知识想的。能否指教下。时间有点点紧所以没怎么用心查资料

作者: dahaiI0   发布时间: 2011-06-13

C/C++ code
void COpnPageDlg::OnBnClickedButton2()
{
    // TODO: 在此添加控件通知处理程序代码
    if(m_pHtmlView)
    {
        IHTMLDocument2 *pIHTMLDoc=(IHTMLDocument2*)m_pHtmlView->GetHtmlDocument();
        if(pIHTMLDoc)
        {
            EnumFrame(pIHTMLDoc);
            CString Str;
            CComQIPtr< IHTMLElementCollection > spAllElementCollection;
            HRESULT hr = pIHTMLDoc->get_all( &spAllElementCollection );    //
            long nAllCount=0;
            hr=spAllElementCollection->get_length(&nAllCount);
            Str.Format(TEXT("all: %d"),nAllCount);
            OutputDebugString(Str);
            for(long i = 0 ;  i < nAllCount ;  i++)
            {
                IDispatch *pDisp = NULL;    //取得第 i 个Link
                spAllElementCollection->item( CComVariant(i) , CComVariant() , &pDisp);
                if ( pDisp == NULL )        continue;

                CComQIPtr< IHTMLElement > spElement = pDisp;
                pDisp->Release();
                if(!spElement) continue;
                CComBSTR bstrSrc;
                spElement->get_tagName(&bstrSrc);
                CString tStr;
                tStr+=bstrSrc.m_str;
                tStr+=" ";
                /*spElement->get_outerText(&bstrSrc);
                tStr+=bstrSrc.m_str;
                tStr+=" ";*/
                
                if(_tcsicmp(bstrSrc.m_str,TEXT("A"))==0 || _tcsicmp(bstrSrc.m_str,TEXT("LINK"))==0)
                {
                    spElement->get_outerText(&bstrSrc);
                    tStr+=bstrSrc.m_str;
                    tStr+=" ";
                    /*if(_tcsstr(bstrSrc.m_str,TEXT("同意以下协议"))!=NULL)
                    {
                        spElement->click();//[color=#FF0000]这里就是按钮提交[/color]
                    }*/
                    OutputDebugString(tStr);
                }
                
            }
        }
    }
}

HRESULT COpnPageDlg::EnumFrame(IHTMLDocument2 *pHtmlDoc)
{
    if(pHtmlDoc==NULL)
    {
        return -1;
    }
    CComPtr< IHTMLFramesCollection2 > spFramesCollection2;
    pHtmlDoc->get_frames( &spFramesCollection2 );    //取得框架frame的集合
    long nFrameCount=0;                //取得子框架个数
    HRESULT hr = spFramesCollection2->get_length( &nFrameCount );
    if(hr>=0 && nFrameCount>0)
    {
        CString Str;
        Str.Format(TEXT("frames:%d"),nFrameCount);
        OutputDebugString(Str);
        for(int i=0;i<nFrameCount;i++)
        {
        CComVariant vDispWin2;        //取得子框架的自动化接口
        hr=spFramesCollection2->item(&CComVariant(i) , &vDispWin2);

        //取得子框架的 IHTMLWindow2 接口
        CComQIPtr< IHTMLWindow2 > spWin2 = vDispWin2.pdispVal;
        if( !spWin2 )    continue;    

        CComPtr < IHTMLDocument2 > spDoc2;
        spWin2->get_document( &spDoc2 );    //取得子框架的 IHTMLDocument2 接口
        EnumFrame(spDoc2);


        CComQIPtr< IHTMLElementCollection > spAllElementCollection;
        hr = pHtmlDoc->get_links( &spAllElementCollection );    //
        long nAllCount=0;
        hr=spAllElementCollection->get_length(&nAllCount);
        Str.Format(TEXT("all: %d"),nAllCount);
        OutputDebugString(Str);
        for(long i = 0 ;  i < nAllCount ;  i++)
        {
            IDispatch *pDisp = NULL;    //取得第 i 个Link
            spAllElementCollection->item( CComVariant(i) , CComVariant() , &pDisp);
            if ( pDisp == NULL )        continue;

            CComQIPtr< IHTMLElement > spElement = pDisp;
            pDisp->Release();
            if(!spElement) continue;
            CComBSTR bstrSrc;
            spElement->get_tagName(&bstrSrc);
            CString tStr;
            tStr+=bstrSrc.m_str;
            tStr+=" ";
            if(_tcsicmp(bstrSrc.m_str,TEXT("A"))==0 || _tcsicmp(bstrSrc.m_str,TEXT("LINK"))==0 )
            {
                spElement->get_outerText(&bstrSrc);
                tStr+=bstrSrc.m_str;
                tStr+=" ";
            }
            OutputDebugString(tStr);
            
        }
        }
    }
    return hr;
}

作者: xiaohuh421   发布时间: 2011-06-13