Я пытаюсь вызвать onsubmit программно, не нажимая кнопку формы.
Сначала я пытаюсь просто вызвать функцию отправки интерфейса IHTMLFormElement, но форма неправильно обрабатывает входные данные:
CComPtr<IHTMLFormElement> ppvForm;
ppvForm->submit();
Я прочитал в документации, и она говорит, что функция submit не вызывает событие onsubmit, затем я пытаюсь вызвать событие onsubmit, используя метод вызова IDispatch, предоставляемый get_onsubmit интерфейса IHTMLFormElement:
CComPtr<IHTMLFormElement> ppvForm;
...
_variant_t vResult;
_variant_t tvar;
hResult = ppvForm->get_onsubmit(&tvar); // <<< i get a NULL VARIANT here
DISPPARAMS params = {0};
hResult = tvar.pdispVal->Invoke(
DISPID_VALUE,
IID_NULL,
LOCALE_SYSTEM_DEFAULT,
DISPATCH_METHOD,
¶ms,
&vResult,
NULL,
NULL);
if( SUCCEEDED(hResult) )
...
Но вызов ppvForm-> get_onsubmit возвращает S_OK с NULL-вариантом ... (не знаю почему?!)
И в конце пробовал fireEvent из IHTMLDocument4интерфейс:
HRESULT hrRes=S_FALSE;
CComPtr<IHTMLDocument4> piDoc;
...
VARIANT_BOOL varRet;
CComPtr<IHTMLEventObj>pEvent;
hrRes=piDoc->createEventObject(NULL, &pEvent);
_variant_t vtEvent(pEvent);
hrRes=piDoc->fireEvent(_bstr_t(_T("onsubmit")), &vtEvent, &varRet);
FireEvent теперь всегда возвращает E_INVALIDARG!не знаю почему?не знаю, нужно ли мне что-то поместить в vtEvent или строка «onsubmit» недопустима, не знаю.
Может кто-нибудь указать мне правильное направление или сказать, что я делаю неправильно