在 MFC 中运行 JScript 脚本并获取返回值,可以通过以下步骤实现:

  1. 引入 JScript 引擎:
#import "C:\Windows\System32\jscript.dll"
using namespace JScript;
  1. 创建 JScript 引擎对象:
IActiveScript* pScriptEngine = NULL;
CoCreateInstance(CLSID_JScript, NULL, CLSCTX_ALL, IID_IActiveScript, (void**)&pScriptEngine);
  1. 添加脚本代码到引擎中:
// 脚本代码
CString scriptCode = L"function add(a, b) { return a + b; }";

// 添加脚本代码到引擎中
pScriptEngine->SetScriptState(SCRIPTSTATE_CONNECTED);
pScriptEngine->AddScriptlet(NULL, scriptCode, L"test.js", L"JScript", NULL, NULL, SCRIPTTEXT_ISVISIBLE);
  1. 执行脚本并获取返回值:
// 准备参数
VARIANTARG args[2];
VariantInit(&args[0]);
VariantInit(&args[1]);
args[0].vt = VT_I4;
args[0].lVal = 1;
args[1].vt = VT_I4;
args[1].lVal = 2;

// 执行脚本
VARIANT result;
VariantInit(&result);
EXCEPINFO excepInfo;
pScriptEngine->ParseScriptText(L"add(1, 2);", NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISVISIBLE, &result, &excepInfo);

// 获取返回值
CString strResult;
if (result.vt == VT_BSTR) {
    strResult = result.bstrVal;
}

完整代码示例:

#import "C:\Windows\System32\jscript.dll"
using namespace JScript;

void RunJScript()
{
    // 创建 JScript 引擎对象
    IActiveScript* pScriptEngine = NULL;
    CoCreateInstance(CLSID_JScript, NULL, CLSCTX_ALL, IID_IActiveScript, (void**)&pScriptEngine);

    // 脚本代码
    CString scriptCode = L"function add(a, b) { return a + b; }";

    // 添加脚本代码到引擎中
    pScriptEngine->SetScriptState(SCRIPTSTATE_CONNECTED);
    pScriptEngine->AddScriptlet(NULL, scriptCode, L"test.js", L"JScript", NULL, NULL, SCRIPTTEXT_ISVISIBLE);

    // 准备参数
    VARIANTARG args[2];
    VariantInit(&args[0]);
    VariantInit(&args[1]);
    args[0].vt = VT_I4;
    args[0].lVal = 1;
    args[1].vt = VT_I4;
    args[1].lVal = 2;

    // 执行脚本
    VARIANT result;
    VariantInit(&result);
    EXCEPINFO excepInfo;
    pScriptEngine->ParseScriptText(L"add(1, 2);", NULL, NULL, NULL, 0, 0, SCRIPTTEXT_ISVISIBLE, &result, &excepInfo);

    // 获取返回值
    CString strResult;
    if (result.vt == VT_BSTR) {
        strResult = result.bstrVal;
    }

    // 释放资源
    VariantClear(&result);
    VariantClear(&args[0]);
    VariantClear(&args[1]);
    pScriptEngine->Close();
    pScriptEngine->Release();
}
``
MFC 如何运行jscript脚本并获得返回值

原文地址: https://www.cveoy.top/t/topic/chq5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录