VC在IE中调用Javascript函数

时间:2014-05-20 09:22:40

标签: javascript c++ internet-explorer

我希望VC在网站上执行JavaScript功能。

我的c ++代码可以成功执行标准的JS函数。 (例如" alert()")

但目标JavaScript功能由网站,网站html代码分隔:

"<script src="//xxx/yyy/zzz.js"></script>"

我的c ++代码似乎无法在&#34; zzz.js&#34;中找到功能。 by&#34; GetIDsOfNames()&#34;

有没有办法在&#34; zzz.js&#34;中获取/执行功能?

感谢。

下面是c ++代码:

bool execJavascript(const CComPtr<IHTMLDocument2> spDocument2, wstring wsFuncName, const       CArray <VARIANT, VARIANT&> &pArrVARIANT_Params) 
{
HRESULT hr = S_FALSE;
CComPtr<IDispatch> pScript;
hr = spDocument2-> get_Script(&pScript);
if (FAILED(hr))
    return false;

//(2)Get   Javascript   Function 
CComBSTR pCComBSTR(wsFuncName.c_str());
DISPID pDISPID;
hr = pScript->GetIDsOfNames(IID_NULL, &pCComBSTR, 1, LOCALE_SYSTEM_DEFAULT, &pDISPID);
if (FAILED(hr))
    return false;

//(3)Add   Parameters 
DISPPARAMS pDISPPARAMS;
memset(&pDISPPARAMS, 0, sizeof(pDISPPARAMS));

int intArgsCount_In = pArrVARIANT_Params.GetSize();
VARIANT* vParams = new VARIANT[intArgsCount_In]; 

for (int i = 0 ; i < intArgsCount_In ; i++) 
{ 
    vParams[i] = pArrVARIANT_Params.GetAt(i);
} 

//Params   Count 
pDISPPARAMS.cArgs = intArgsCount_In;
//Params   Array 
pDISPPARAMS.rgvarg = vParams;
//Name   Args   Count 
pDISPPARAMS.cNamedArgs = 0;

//(4)Invoke   Javascript   Method
EXCEPINFO pEXCEPINFO;
memset(&pEXCEPINFO, 0, sizeof(pEXCEPINFO));

CComVariant pCComVariant;
//Initialize   to   invalid   arg 
UINT nintArgErr = (UINT)-1;

hr = pScript->Invoke(pDISPID, IID_NULL, 0, DISPATCH_METHOD, &pDISPPARAMS, &pCComVariant, &pEXCEPINFO, &nintArgErr); 

delete[] pDISPPARAMS.rgvarg;
pScript.Release();

if(FAILED(hr))
    return false;
return true;
} 

0 个答案:

没有答案