gpt4 book ai didi

c++ - 在 C++ 中使用 IActiveScript 执行 cscript

转载 作者:搜寻专家 更新时间:2023-10-31 02:22:29 29 4
gpt4 key购买 nike

我正在尝试使用带有 IActiveScriptParseParseScriptTextcscript 执行脚本,但由于某种原因我收到错误: E_UNEXPECTED.

article对我帮助很大。我在我的代码中使用了它的 getEngineGuid 函数。

下面的代码是我试过的。它打印:

-2147418113
-2147418113

含义 activeScriptParse->ParseScriptText 返回 E_UNEXPECTED。那我做错了什么?

#include <iostream>
#include <Windows.h>
#include <ObjBase.h>
#include <ActivScp.h>

using namespace std;

int main(int argc, char* argv[])
{
CoInitialize(NULL);
GUID guidBuffer;

// Find the script engine to use for files that end with a .js extension.
// This is implemented in the article I linked to.
getEngineGuid(".js", &guidBuffer);

IActiveScript *activeScript;
CoCreateInstance(guidBuffer, 0, CLSCTX_ALL,
IID_IActiveScript,
(void **)&activeScript);
IActiveScriptParse *activeScriptParse;
activeScript->QueryInterface(IID_IActiveScriptParse,
(void **)&activeScriptParse);
activeScriptParse->InitNew();

EXCEPINFO ei ={};
VARIANT result;
cout << E_UNEXPECTED << endl;
cout << activeScriptParse->ParseScriptText(OLESTR("(new Date()).getTime()"), NULL,
NULL, NULL, 0, 0, SCRIPTTEXT_ISEXPRESSION,
&result, &ei) << endl;
activeScriptParse->Release();

return 0;
}

非常感谢!

最佳答案

Igor Tandetnik 的评论为我指明了正确的方向。

我使用的文章展示了如何SetScriptSite,但它是用c 编写的。本题:How to load & call a VBScript function from within C++有一个非常有用的答案。

正如那个答案所说,您应该做的是定义一个至少有 IActiveScriptSiteIActiveScriptSiteWindow 作为接口(interface)的类。

关于c++ - 在 C++ 中使用 IActiveScript 执行 cscript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30262000/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com