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; |
al final me dieron la solución:
<CODE> pedef std::map<CComVariant, CComBSTR> MapField; MapField mf; mf["A010101"] = L"43000000K"; // primeros dos campos del form mf["A010102"] = L"nombre y apellidos"; // "web" es TCppWebBrowser CComQIPtr<IHTMLDocument2> doc(web->Document); // Obtenemos la lista de frames CComPtr<IHTMLFramesCollection2> frames; doc->get_frames(&frames); // long numFrames; frames->get_length(&numFrames); // De la lista seleccionamos el frame con su nombre CComVariant frameDisp; OleCheck(frames->item(&CComVariant("nombreDelFrame"), &frameDisp)); CComQIPtr<IHTMLWindow2> frame(frameDisp.pdispVal); // Obtenemos el documento de dicho frame CComPtr<IHTMLDocument2> docFrame; frame->get_document(&docFrame); // Seleccionamos el form a rellenar con su nombre CComPtr<IHTMLElementCollection> forms; docFrame->get_forms(&forms); CComPtr<IDispatch> disp; HRESULT hr = forms->item(CComVariant("nombreDelFormARellenar"), CComVariant(), &disp); if (SUCCEEDED(hr) && disp) { CComQIPtr<IHTMLFormElement> form(disp); CComQIPtr<IHTMLInputElement> field; for (MapField::iterator ite = mf.begin(); ite != mf.end(); ite++) { disp = 0; if (SUCCEEDED(form->item(ite->first, CComVariant(), &disp)) && disp) { field = disp; field->put_value(ite->second); } } // form->submit(); } </CODE> |
La franja horaria es GMT +2. Ahora son las 11:22:56. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi