bool CGetWebApp::SetDocument(IDispatch* pDisp)
{
CHECK_POINTER(pDisp);
m_spHtmlDoc = NULL;
CComPtr<IDispatch> spScript = pDisp;
HRESULT hr = spScript->QueryInterface(IID_IHTMLDocument2,(void**)&m_spHtmlDoc);
if(FAILED(hr))
{
return false;
}
return true;
}
bool CGetWebApp::GetJScript(CComPtr<IDispatch>& spScript)
{
CHECK_POINTER(m_spHtmlDoc);
HRESULT hr = m_spHtmlDoc->get_Script(&spScript);
ATLASSERT(SUCCEEDED(hr));
return SUCCEEDED(hr);
}
bool CGetWebApp::CallJScript(const CString strFunc, const CStringArray& paramArray, CComVariant* pVarResult)
{
CComPtr<IDispatch> spScript;
if (!GetJScript(spScript))
{
return FALSE;
}
CComBSTR bstrMember(strFunc);
DISPID dispid = NULL;
HRESULT hr = spScript->GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_SYSTEM_DEFAULT,&dispid);
if(FAILED(hr))
{
return FALSE;
}
const int INT_PTR = paramArray.GetSize();
DISPPARAMS dispparams;
memset(&dispparams, 0, sizeof dispparams);
dispparams.cArgs = INT_PTR;
dispparams.rgvarg = new VARIANT[dispparams.cArgs];
for( int i = 0; i < INT_PTR; i++)
{
CComBSTR bstr = paramArray.GetAt(INT_PTR - 1 - i); // back reading
bstr.CopyTo(&dispparams.rgvarg[i].bstrVal);
dispparams.rgvarg[i].vt = VT_BSTR;
}
dispparams.cNamedArgs = 0;
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
CComVariant vaResult;
UINT nArgErr = (UINT)-1; // initialize to invalid arg
hr=spScript->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr); //調用js函數
delete [] dispparams.rgvarg;
if(FAILED(hr))
{
return FALSE;
}
*pVarResult = vaResult;
return TRUE;
}
VC調用JS
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
vc編輯ini文件
haodawei123
2020-07-05 20:25:50
vc調用python傳入中文參數
haodawei123
2020-06-22 20:30:56
vc6.0 一編譯就程序無法響應
gll028
2020-06-22 03:23:29
編譯錯誤提示:GetWeb.cpp(99) : error C2653: 'CWebPage' : is not a class or namespace name
SKY0218
2020-06-16 10:40:59
編譯器編譯過程探究
g200407331
2020-05-22 21:38:52
vc設置控件顏色
haodawei123
2020-04-18 23:06:03
vc調用com方法
haodawei123
2020-04-01 04:54:37
VS2013程序設置給其他系統使用
haodawei123
2020-03-10 16:29:58
逆向添加菜單vb
haodawei123
2020-03-08 02:52:15
逆向---注入方式給應用程序添加菜單
haodawei123
2020-03-08 02:52:15
三種字符串分割方法(C/C++)
gll028
2020-02-23 09:54:19
please enter the path for mfcs42d.pdb 提示解決方法
gll028
2020-02-23 09:54:19
根據文件路徑獲得其所在文件夾,並刪除該文件夾下後綴名爲.tmp的所有文件
gll028
2020-02-23 09:54:18
MFC 判斷線程是否結束
gll028
2020-02-23 09:54:18