Ver Mensaje Individual
  #2  
Antiguo 15-05-2011
mns mns is offline
Miembro
 
Registrado: feb 2008
Posts: 13
Reputación: 0
mns Va por buen camino
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>

Última edición por mns fecha: 15-05-2011 a las 21:34:46.
Responder Con Cita