IE10 Chakra JScript引擎是否可以作为独立的C#访问?

时间:2011-05-09 15:22:27

标签: c# javascript chakra

微软可能(实际上我认为它将来)将IE10 Chakra(JScript引擎)作为独立模块发布,就像谷歌V8 JavaScript引擎一样。

  • 问题是:引擎是否可以从C#中访问IronPython?

5 个答案:

答案 0 :(得分:23)

Javascript的Chakra引擎可通过IActiveScript界面提供给C#程序。这与IronPython模型不一样 - 通过Chakra这种方式调用的JS没有编译成MSIL,也不是.NET逻辑。它不在CLR / DLR上运行。它运行在自己的引擎中。

// Initialize Chakra (requires IE9 to be installed)
var guid = new System.Guid("{16d51579-a30b-4c8b-a276-0ff4dc41e755}");
Type t = Type.GetTypeFromCLSID(guid, true);
// you must have a p/invoke defn for IActiveScript
var engine = Activator.CreateInstance(t) as IActiveScript;

var site = new ScriptSite(); // this is a custom class
engine.SetScriptSite(site);

var parse32 = engine as IActiveScriptParse32;
parse32.InitNew();

// parse a script
engine.SetScriptState(ScriptState.Connected);
parse32.ParseScriptText(scriptText, null, null, null, IntPtr.Zero, 0, flags, out result, out exceptionInfo);

IntPtr comObject;
engine.GetScriptDispatch(null, out comObject);

// iDispatch is a COM IDispatch  that you can use to invoke script functions. 
var iDispatch = Marshal.GetObjectForIUnknown(comObject);

iDispatch.GetType().InvokeMember(methodName, BindingFlags.InvokeMethod, null, iDispatch, arguments);

这是一个用C#编写的winforms测试应用程序,通过这个界面运行Chakra:

enter image description here

您可以下载from here。 (查找ScriptHost.zip文件)

更多信息:
What is the ProgId or CLSID for IE9's Javascript engine (code-named "Chakra")

答案 1 :(得分:2)

C#和IronPython都是.NET语言。它们共享相同的运行时,因此它们可以轻松交互。没有任何迹象表明Chakra是基于.NET构建的;相反,鉴于它为了性能而将JavaScript编译为机器代码,我会说它不会以相同的方式集成。

他们可能会提供一个.NET API,可以将JS从.NET语言传递到JavaScript引擎,但这只是我的推测。

答案 2 :(得分:2)

Chakra运行时现在可以通过pinvoke直接从C#调用。您不需要通过活动脚本。 api非常好,非常快。以下是如何在MSDN上执行此操作的示例:

http://code.msdn.microsoft.com/windowsdesktop/JavaScript-Runtime-Hosting-d3a13880

答案 3 :(得分:0)

JavaScript(作为JScript)是.Net支持的原始语言之一。在动态可用之前就已经创建了支持,因此它与IronPython不同......如果你需要.Net中的JavaScript引擎,它可能足以满足你的需求 - http://msdn.microsoft.com/en-us/library/72bd815a(v=VS.100).aspx

答案 4 :(得分:0)

查看微软刚刚发布的有关此主题的内容:

http://blogs.windows.com/msedgedev/2015/05/18/using-chakra-for-scripting-applications-across-windows-10/#comment-841

在博客答案中,您可以找到Microsoft的最新评论。答案是: “Re:Windows脚本 - Windows Scripting主机支持JavaScript但不基于Chakra引擎。目前,该项目并不打算改变它。”