在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文件
参考技术A1、将这一段代码保存到一个文件中。
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中的方法的主要内容,如果未能解决你的问题,请参考以下文章