VC调用IE中的Javascript函数

VC调用IE中的Javascript函数,javascript,c++,internet-explorer,Javascript,C++,Internet Explorer,我想用VC在网站上执行JavaScript函数 < >我的C++代码可以成功执行标准JS函数。(例如“警报()”) 但目标JavaScript函数由网站分隔,网站html代码: "<script src="//xxx/yyy/zzz.js"></script>" “” 我的C++代码在“ZigZ.FixNeSee()”中找不到“ZZ.js”函数。 有没有办法获取/执行“zzz.js”中的函数 谢谢 下面是C++代码: bool execJavascript(const

我想用VC在网站上执行JavaScript函数

< >我的C++代码可以成功执行标准JS函数。(例如“警报()”)

但目标JavaScript函数由网站分隔,网站html代码:

"<script src="//xxx/yyy/zzz.js"></script>"
“”
<>我的C++代码在“ZigZ.FixNeSee()”

中找不到“ZZ.js”函数。 有没有办法获取/执行“zzz.js”中的函数

谢谢

下面是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;
} 
bool execJavascript(const CComPtr spDocument2、wstring wsFuncName、const CArray和pArrVARIANT_参数)
{
HRESULT hr=S_FALSE;
CComPtr pScript;
hr=spDocument2->get_脚本(&pScript);
如果(失败(小时))
返回false;
//(2) 获取Javascript函数
CComBSTR pCComBSTR(wsFuncName.c_str());
DISPID-pDISPID;
hr=pScript->GetIDsOfNames(IID_NULL,&pCComBSTR,1,LOCALE_SYSTEM_DEFAULT,&pDISPID);
如果(失败(小时))
返回false;
//(3) 添加参数
DISPPARAMS-pDISPPARAMS;
memset(&pDISPPARAMS,0,sizeof(pDISPPARAMS));
int intargscont_In=parrviant_Params.GetSize();
VARIANT*vParams=新变量[intargscont_In];
对于(int i=0;iInvoke(pDISPID、IID_NULL、0、DISPATCH_方法、pDISPPARAMS、pCComVariant、pEXCEPINFO和nintArgErr);
删除[]pDISPPARAMS.rgvarg;
pScript.Release();
如果(失败(小时))
返回false;
返回true;
} 

代码似乎没有问题,可能是函数名中有错误?或者您需要一个变量来调用函数?我检查了,代码在“GetIDsOfNames()”处失败。函数名正确,不需要任何参数。函数是用“zzz.js”编写的。谢谢。可能会显示您试图调用的javascript函数?函数doAjaxLogin(){$.post(“/ic/api/signinx.jsp)”,$(“#loginForm”).serialize(),函数(data){if(data.status==“true”){if(data.url){location.href=data.url;return;}performLogin()}else{if(data.url)location.href=data.url;},“json”);}我找到了根本原因。IE9或更新版本不支持“GetIDsOfNames()”。请参考,谢谢。