0
我试图通过编程方式调用onsubmit而无需单击窗体按钮。如何使用IWebBrowser2接口(使用c + +)正确调用onsubmit事件
首先我尝试简单地调用提交IHTMLFormElement接口的功能,但形式不正确地处理输入数据:
CComPtr<IHTMLFormElement> ppvForm;
ppvForm->submit();
我的文档中读取和它说,提交功能不叫在onsubmit事件,然后我尝试使用IDispatch调用由IHTMLFormElement接口的get_onsubmit提供的方法来调用onsubmit事件:
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 ... (别 知道为什么?!)
而最终从IHTMLDocument4接口尝试fireEvent:
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”字符串无效,不知道。
任何人都可以指向正确的方向或告诉我我做错了什么?
它是HTML页面中的唯一形式,如果我在IHTMLElement(html button elment)上调用click()函数,所有过程都可以正确完成(但这需要用户在消息框中作出选择,并且我试图避免此消息框) 按钮代码:(? “的动作确认书” 确认() 功能投递(){ 如果 (submitthis()) 如果) 的document.getElementById(” form1' 中)提交();你可以看到我只想做'document.getElementById('form1')。submit();'声明... – Nuno 2011-01-11 20:18:15