在C++中怎么调用一个js中的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C++中怎么调用一个js中的方法相关的知识,希望对你有一定的参考价值。

例如一个test.js内容如下:
function main( input )

return input;

在C++中调用方法如下:
// vcJscript.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#import "C:/windows/system32/msscript.ocx" // msscript.ocx
using namespace MSScriptControl;
#include <fstream>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])

HRESULT hr = CoInitialize(NULL);
IScriptControlPtr pScriptControl(__uuidof(ScriptControl));
pScriptControl->Language = "javascript";
//pScriptControl->AllowUI = TRUE;
fstream file;
file.open( "test.js" );
string strFileContent, strTemp;
char szTemp[1024]="";

do

file.read(szTemp, 1024);
strFileContent.append( szTemp );
memset( szTemp, 0, 1024 );

while ( !file.fail() );
file.close();
pScriptControl->AddCode(strFileContent.c_str());
VARIANT A = pScriptControl->Eval("main(4);");
int iRet = A.intVal;
return 0;

脚本控件有四种方法。其中之一是 Run(),运行子例程或函数。在调用此方法之前,指定的脚本语言、 设置 AllowUI,并将下面的脚本添加到脚本控件:
//---------------------- Begin ---------------------------

#include <stdio.h>
#import "C:/winnt/system32/msscript.ocx" // msscript.ocx
using namespace MSScriptControl;

int main(void)

HRESULT hr = CoInitialize(NULL);

IScriptControlPtr pScriptControl(__uuidof(ScriptControl));

// Create a VARIANT array of VARIANTs which hold BSTRs
LPSAFEARRAY psa;
SAFEARRAYBOUND rgsabound[] = 3, 0 ; // 3 elements, 0-based
int i;

psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound);
if (!psa)

return E_OUTOFMEMORY;


VARIANT vFlavors[3];
for (i = 0; i < 3; i++)

VariantInit(&vFlavors[i]);
V_VT(&vFlavors[i]) = VT_BSTR;


V_BSTR(&vFlavors[0]) = SysAllocString(OLESTR("Vanilla"));
V_BSTR(&vFlavors[1]) = SysAllocString(OLESTR("Chocolate"));
V_BSTR(&vFlavors[2]) = SysAllocString(OLESTR("Espresso Chip"));

long lZero = 0;
long lOne = 1;
long lTwo = 2;

// Put Elements to the SafeArray:
hr = SafeArrayPutElement(psa, &lZero,&vFlavors[0]);
hr = SafeArrayPutElement(psa, &lOne,&vFlavors[1]);
hr = SafeArrayPutElement(psa, &lTwo,&vFlavors[2]);

// Free Elements from the SafeArray:
for(i=0;i<3;i++)

SysFreeString(vFlavors[i].bstrVal);


// Set up Script control properties
pScriptControl->Language = "JScript";
pScriptControl->AllowUI = TRUE;
pScriptControl->AddCode(
"function MyStringFunction(Argu1,Argu2,Argu3)/
return /"hi there/" ;" );

// Call MyStringFunction with the two args:
_variant_t outpar = pScriptControl->Run("MyStringFunction", &psa);

// Convert VARIANT to C string:
_bstr_t bstrReturn = (_bstr_t)outpar;
char *pResult = (char *)bstrReturn;

// Print the result out:
printf("func=%s/n",pResult);

// Clean up:
SafeArrayDestroy(psa);

CoUninitialize();
return(0);
参考技术A 用web控件把网页加载起来,然后又再调用。无法凭空调用的

怎么在html文件中调用js文件

参考技术A

1、将这一段代码保存到一个文件中。

2、注意,您可以任何文本工具创建js文件,不过您在保存的时候,需要将名字后缀名为.js。

3、这里将js文件保存为index.js。之后如果我们需要使用index.js。我们只需要调用即可,不需要再写新的js文件。

4、在html的head部分引入js文件,具体的代码。

5、这个引用是一个双标签,就算没有内容,也得写全。

6、如果您的js是从外面引入,那么您不能在<script></script>中间再写js代码。

7、如果有需要,那么您需要重新声明script标签,在标签内写您的js代码。

8、无论是javascript jquery都是一样的规则,必须在script标签内写代码。引入了js文件后,您可以在需要的地方直接调用即可。

以上是关于在C++中怎么调用一个js中的方法的主要内容,如果未能解决你的问题,请参考以下文章

怎样在C++中调用MYSQL数据库中的数据

一个js方法中怎么调用另一个js文件

一个js方法中怎么调用另一个js文件

怎么在jsp页面中调用js文件中的函数

js问题 有两个方法,怎么实现其中一个方法调用另一个方法中的变量?

c++工程里一个文件怎么调用另外一个文件里的函数