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.
|