在c#中调用64位项目的Javascript函数
本文关键字:Javascript 函数 项目 64位 调用 | 更新日期: 2023-09-27 18:09:51
我试图从c#代码内部调用Javascript函数"eval"(利用字符串到操作符解析器)。我使用了以下代码:https://stackoverflow.com/a/12431435/712700
它崩溃了,并显示以下消息——:
异常详细信息: System.Runtime.InteropServices.COMException:为具有CLSID的组件检索COM类工厂{0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC}由于以下原因失败错误:80040154类未注册(来自HRESULT的异常:0 x80040154 (REGDB_E_CLASSNOTREG)) .
我相信这个问题是因为项目/机器是64位的。我不想将项目更改为32位,是否有另一个CLSID我可以使用它使其与64位一起工作?或者是否有另一种方法可以在c#代码中简单地利用Javascript中的"eval"函数?
您指的是以下代码
Type scriptType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC"));
dynamic obj = Activator.CreateInstance(scriptType, false);
obj.Language = "javascript";
var res = obj.Eval("a=3; 2*a+32-Math.sin(6)");
上面的ClSID实际上是用于ScriptControl
- 添加ScriptControl - Language参数
- 使用ScriptControl方法- Eval方法
从上面的2个链接,你会看到这是VB6相关的,如果你想使用上面的代码在你的问题中提到,你将需要msscript.ocx。请检查你是否有这个文件。您可能必须使用regsvr32
正确地注册它我使用的是64位机器,我在以下文件夹C:'Windows'SysWOW64