boyka913 2015-01-07 02:15 采纳率: 0%
浏览 1489

请教一个VC调用JS的问题

请教一个问题,我用VC调用JS,
我用的是WEBSOCKET长连接,我第1次调用SendData,会收到1个返回data, 第2次用,却会收到2个返回(正确的应该只有1个),第3次收到3个返回。。。
这个HTML在浏览器中使用是正常的,而我用VC调用的时候就不正常了,这是为什么?

JS代码:
//接收服务器返回值
socket.on('message', function(data){alert(data);};
//发送数据
function SendData(str){
socket.send(str.toString());}

VC代码
bool execJavascript2(const CComPtr spDocument2,
wstring wsFuncName)
{
HRESULT hr = S_FALSE;
CComPtr 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));

CComVariant var1 = L"execJavascript2 hyb";
int nParamCnt = 1;
VARIANT* pParams = new VARIANT[nParamCnt]; 

for (int i = 0 ; i < nParamCnt ; i++) 
{ 
    pParams[i] = var1;
} 

//Params   Count 
pDISPPARAMS.cArgs = nParamCnt;
//Params   Array 
pDISPPARAMS.rgvarg = pParams;
//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;

}

  • 写回答

2条回答 默认 最新

  • boyka913 2015-01-07 03:15
    关注

    没人问答吗,自己顶一个。。。

    评论

报告相同问题?

悬赏问题

  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组