IActiveScriptProperty 接口没有直接返回值的方法,它主要用于设置和获取脚本引擎的属性。如果需要获取脚本引擎的返回值,需要使用 IActiveScriptParse64 接口中的 ParseScriptText 方法,该方法可以解析脚本文本并返回执行结果。具体的代码实现可以参考以下示例:

IActiveScriptParse64* pParser = nullptr;
IActiveScript* pEngine = nullptr;

// 创建脚本引擎
CoCreateInstance(CLSID_JScript, nullptr, CLSCTX_INPROC_SERVER, IID_IActiveScript, (void**)&pEngine);

// 初始化脚本引擎
pEngine->SetScriptSite(this);
pEngine->AddNamedItem(L"window", SCRIPTITEM_ISVISIBLE | SCRIPTITEM_GLOBALMEMBERS);

// 获取解析器接口
pEngine->QueryInterface(IID_IActiveScriptParse64, (void**)&pParser);

// 解析脚本文本并获取返回值
VARIANT result;
EXCEPINFO exception;
memset(&result, 0, sizeof(VARIANT));
memset(&exception, 0, sizeof(EXCEPINFO));
pParser->ParseScriptText(L"function test() { return 123; } test();", nullptr, nullptr, nullptr, 0, 0, SCRIPTTEXT_ISEXPRESSION, &result, &exception);

// 处理返回值
if (result.vt == VT_I4) {
    int value = result.intVal;
    // 处理整型返回值
}
else if (result.vt == VT_BSTR) {
    BSTR str = result.bstrVal;
    // 处理字符串返回值
}

// 释放资源
VariantClear(&result);
pParser->Release();
pEngine->Release();
``
IActiveScriptProperty 获得返回值

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

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