有如下html文件内容:
<html><body><form>
<input type=button value='button' onclick='this.value="button_edit" />
</form></body></html>现有以下代码片断:
CComPtr<IHTMLElement> spInputElement;
CComVariant vOnclick;
spInputElement->get_onclick(&vOnclick);
IDispatch* spdisp=vOnclick.pdispVal;
问题:
如何利用spdisp->Invoke执行此onclick函数
在下先表示感谢啦!!!
<html><body><form>
<input type=button value='button' onclick='this.value="button_edit" />
</form></body></html>现有以下代码片断:
CComPtr<IHTMLElement> spInputElement;
CComVariant vOnclick;
spInputElement->get_onclick(&vOnclick);
IDispatch* spdisp=vOnclick.pdispVal;
问题:
如何利用spdisp->Invoke执行此onclick函数
在下先表示感谢啦!!!
请各位大哥帮帮忙,在下深表感谢!!!
这样子写DHTML有问题吧?这个问题不会解决,帮你顶~~~
CComQIPtr<IHTMLDocument2> m_spDocument;
//IHTMLDocument2 你应该得到了吧HRESULT callJScript(BSTR funcName, vector<_variant_t>& params, CComVariant& varResult) {
if ( !m_spDocument ) {
return E_FAIL;
} CComPtr<IDispatch> spScript;
HRESULT hr = m_spDocument->get_Script(&spScript);
ATLASSERT(SUCCEEDED(hr));
if ( FAILED(hr) ) {
return hr;
} DISPID dispid = NULL;
hr = spScript->GetIDsOfNames(IID_NULL,&funcName,1, LOCALE_SYSTEM_DEFAULT,&dispid);
if(FAILED(hr)) {
return hr;
} DISPPARAMS dispparams;
memset(&dispparams, 0, sizeof dispparams);
dispparams.cArgs = params.size();
dispparams.rgvarg = new VARIANT[dispparams.cArgs];
int i = 0;
for( vector<_variant_t>::iterator itr = params.begin(); itr != params.end(); itr ++, i ++ ) {
dispparams.rgvarg[i] = itr->Detach();
}
dispparams.cNamedArgs = 0; EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo); UINT nArgErr = (UINT)-1; // initialize to invalid arg
hr = spScript->Invoke(dispid,IID_NULL,0, DISPATCH_METHOD,&dispparams,&varResult,&excepInfo,&nArgErr);
delete [] dispparams.rgvarg; return hr;
}CComVariant callJScript(BSTR funcName, const _variant_t& param1) {
vector<_variant_t> params;
params.push_back(param1); CComVariant varResult;
callJScript(funcName, params, varResult);
return varResult;
}你给button一个id(比如button1),
CComVariant varResult = callJScript(L"eval", "button1.onclick()");
谢谢你抽出宝贵时间来回答我的问题!!!