请教高手!现在有某些自动填表工具可以自动向网页文本框里添加信息,
这是如何实现的呢?是基于句柄的吗?
请给些资料或者思路啊!谢谢谢谢谢谢啊~~~~

解决方案 »

  1.   

    使用IE Helper与IE协同工作,能自动填写浏览器中显示的表格(源程序)小辉程序员之路 http://www.chinaithero.com/down2/neteork/form_fill_ie.zip
      

  2.   

    ////////////////////////////////////////////////////////
    //Fill input field in IE
    //If it works, it is written by masterz,otherwise I don't
    //know who writes it^_^
    ///////////////////////////////////////////////////////
    #import <mshtml.tlb> // Internet Explorer 5
    #import <shdocvw.dll>
    #include "Shlwapi.h"
    #pragma comment(lib,"Shlwapi.lib")
    int _tmain(int argc, _TCHAR* argv[])
    {
    CoInitialize(NULL);
    SHDocVw::IShellWindowsPtr m_spSHWinds;
    if(m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows)) == S_OK)
    {
    IDispatchPtr spDisp;
    long nCount = m_spSHWinds->GetCount();
    for (long i = 0; i < nCount; i++)
    {
    _variant_t va(i, VT_I4);
    spDisp = m_spSHWinds->Item(va);
    SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);
    if (spBrowser != NULL)
    {
    IDispatchPtr spDisp;
    if(spBrowser->get_Document(&spDisp) == S_OK && spDisp!= 0 )
    {
    MSHTML::IHTMLDocument2Ptr spHtmlDocument(spDisp);
    MSHTML::IHTMLElementPtr spHtmlElement;
    if(spHtmlDocument==NULL)
    continue;
    spHtmlDocument->get_body(&spHtmlElement);
    if(spHtmlDocument==NULL)
    continue;
    HRESULT hr;
    MSHTML::IHTMLElementCollection* pColl=NULL;
    hr=spHtmlDocument->get_all(&pColl);
    if(pColl!=NULL&&SUCCEEDED(hr))
    {
    long lcount = 0;
    pColl->get_length(&lcount);
    for(int i=0;i<lcount;i++)
    {
    _variant_t index;
    index.vt=VT_I4;
    index.intVal=i;
    IDispatchPtr disp;
    disp=pColl->item(index,index);
    if(disp==NULL)
    hr=E_FAIL;
    else
    {
    MSHTML::IHTMLInputElementPtr pInput(disp);
    if(pInput)
    {
    BSTR bstrtype;
    pInput->get_type(&bstrtype);
    printf(_bstr_t(bstrtype));
    if(StrCmpW(bstrtype,L"text")==0)
    {
    pInput->put_value(_bstr_t("fill it"));
    printf("fill a field\n");
    }
    SysFreeString(bstrtype);
    }
    } }
    pColl->Release();
    }
    } }
    } }
    else 
    {
    printf("Shell Windows interface is not avilable\n");
    }
    CoUninitialize();
    return 0;
    }