Пытаюсь получить поля INPUT HTML формы через IHTMLDocument2.
Написал код:
CComPtr<IOleContainer> spContainer;
m_spClientSite->GetContainer(&spContainer);
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spDoc(spContainer);
if (spDoc)
{
spDoc->put_bgColor(CComVariant(CComBSTR(_T("green"))));
CComPtr<IHTMLElementCollection> spForms;
if(spDoc->get_forms(&spForms)==S_OK)
spDoc->put_bgColor(CComVariant(CComBSTR(_T("blue"))));
else
return E_FAIL;
long nFormsLength=0;
if(spForms->get_length(&nFormsLength))
{
VARIANT varName = {0}, varIndex = {0};
V_VT(&varName) = VT_I4;
V_VT(&varIndex) = VT_I4;
for(int i = 0; i < nFormsLength; i++)
{
V_I4(&varName) = i;
V_I4(&varIndex) = 0;
CComPtr<IDispatch*> spDispItem;
hr = spForms->item(varName, varIndex, spDispItem);
if(hr==S_OK)
{
.......
CComPtr<IHTMLFormElement> spForm1;
hr = pIDisp->QueryInterface(IID_IHTMLFormElement,(void**)&spForm1);
.......
}
}
}
else
return E_FAIL;
Валится между строк помеченных точками .... Подскажите плииз
Здравствуйте IArthur, Вы писали:
skip
IA> if(hr==S_OK)
IA> {
IA> .......
IA> CComPtr<IHTMLFormElement> spForm1;
IA> hr = pIDisp->QueryInterface(IID_IHTMLFormElement,(void**)&spForm1);
IA> .......
IA> }
IA>Валится между строк помеченных точками .... Подскажите плииз
А pIDisp — это что? Где он у тебя получается?
pIDisp берется из JavaScript. Там я делаю ActiveX.
Подскажите где посмотреть???
Здравствуйте IArthur, Вы писали:
CComPtr<IDispatch*> spDispItem;
hr = spForms->item(varName, varIndex, spDispItem);
А не перебор ли это: CComPtr<IDispatch*>?
CComPtr<IDispatch> spDispItem;
hr = spForms->item(varName, varIndex, &spDispItem);