Ver Mensaje Individual
  #1  
Antiguo 13-05-2011
mns mns is offline
Miembro
 
Registrado: feb 2008
Posts: 13
Reputación: 0
mns Va por buen camino
rellenar un formulario web automaticamente

Estoy intentado rellenar un formulario web automaticamente desde builder 6,
concretamente un formulario de hacienda , el 036, cogiendo los datos de una base de datos y no encuentro la manera.
la pagina es la siguiente https://www2.agenciatributaria.gob.e.../ie03700t.html , el formulario esta dentro de un frame , estoy probando cosas pero me da un acces violation
Esto es un codigo que encontre en otra página y que he intentado modificar para capturar el frame ,parece que captura el frame pero luego ya va todo mal , tampoco entiendo mucho el codigo, y no hay manera, como vereis he probado varias cosas a ver si habia suerte pero no.
gracias anticipadas

Código:
     typedef std::map<CComVariant, CComBSTR> MapField;
MapField mf;
mf["A010101"]  = L"43000000K";
mf["A010102"] = L"nombre y apellidos";

CComQIPtr<IHTMLDocument2> doc(web->Document);
CComPtr<IHTMLElementCollection> forms;
CComPtr<IHTMLFramesCollection2> frames;
doc->get_frames(&frames);
CComPtr<IDispatch> disp;
VARIANT n, vFrame;
    n.vt = VT_I4;
    n.intVal = 1;
HRESULT hr = frames->item(&n,&vFrame);//  (Variant("pagi"), Variant());
if (SUCCEEDED(hr))
{

    ShowMessage("hola, hay frame"); // hasta aqui parece que funciona

    CComQIPtr<IHTMLFrameElement> frame(disp);
    CComQIPtr<IHTMLFormElement> form(disp);
    form = frame;
    CComQIPtr<IHTMLInputElement> field;
    for (MapField::iterator ite = mf.begin(); ite != mf.end(); ite++)
    {
        disp = 0;
        // a partir de aqui ni idea(todo mal)
        if (SUCCEEDED(form->item(ite->first, CComVariant(), &disp)) && disp)
        {
            field = disp;
            field->put_value(ite->second);
        }
    }
    //form->submit();
}

Última edición por ecfisa fecha: 13-05-2011 a las 20:36:26. Razón: Etiquetas [CODE] [/CODE]
Responder Con Cita