簡體   English   中英

如何使用IWebBrowser2接口(使用C ++)正確調用onsubmit事件

[英]How to correctly call on onsubmit event using IWebBrowser2 interfaces (using c++)

我試圖以編程方式調用onsubmit而不單擊表單按鈕。

首先,我嘗試簡單地調用IHTMLFormElement接口的Submit函數,但是表單未正確處理輸入數據:

CComPtr<IHTMLFormElement> ppvForm;
ppvForm->submit();

我閱讀了文檔,它說Submit函數不會調用onsubmit事件,然后我嘗試使用IHTMLFormElement接口的get_onsubmit提供的IDispatch invoke方法來調用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, 
    &params, 
    &vResult, 
    NULL, 
    NULL);
if( SUCCEEDED(hResult) )
...

但是ppvForm-> get_onsubmit調用返回帶有NULL變體的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”字符串無效,不知道。

誰能指出我的正確方向或告訴我我做錯了什么?

如果get_onsubmit()返回S_OK和NULL處理程序,則根本就沒有分配給表單的onsubmit事件處理程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM