如何在C#中使用Javascript引擎,JavaScript脚本调用自定义的COM组件的接口?需求如下:
1、C#,如何支持Javascript引擎,这样,可以在C#程序中执行Javascriptjiaoben。这个问题已经有了解决方法。参考:http://www.lihuasoft.net/article/show.php?id=8412、对其他的C#编写的COM接口也想要通过Javascript进行调用,又如何处理呢?
例如: 一个COM接口为IMyClassInterface,其中有个函数MyFunc(),Javascript脚本写成
//Javascript file
function MyMain()
{
var nRet = MyFunc();
} C#程序通过运行这个Javascript而运行其中的MyFunc();目的,用户通过简单的Javascript编程来调用提供的COM组件接口完成用户自己所需要的逻辑功能。这样的需求如何作?怎么作?谢谢!
1、C#,如何支持Javascript引擎,这样,可以在C#程序中执行Javascriptjiaoben。这个问题已经有了解决方法。参考:http://www.lihuasoft.net/article/show.php?id=8412、对其他的C#编写的COM接口也想要通过Javascript进行调用,又如何处理呢?
例如: 一个COM接口为IMyClassInterface,其中有个函数MyFunc(),Javascript脚本写成
//Javascript file
function MyMain()
{
var nRet = MyFunc();
} C#程序通过运行这个Javascript而运行其中的MyFunc();目的,用户通过简单的Javascript编程来调用提供的COM组件接口完成用户自己所需要的逻辑功能。这样的需求如何作?怎么作?谢谢!
解决方案 »
- VS2010制作C#程序安装包问题……
- 我刚从网上复制回来的,可是看半天都看不懂这个怎么调用,这个怎么调用?
- winform 中tabcontrol tab页 在一页的textbox中填入数据,然后再换另一页,再回到填入数据的这页中,如何显示原来定的数据。
- List去和取出其中的前N条记录
- C#传递句柄给dll.
- 求c#与数据库的高手!
- 编码问题
- 求解: Composite模式的一些设计 和 如何缓存,几时缓存
- 百分讨论一个关于自己做Combobox的问题
- 设计Form时,里面的控件布局调好后,运行时最大化FORM,如何使各控件按比例变化。(高分)
- vs 2008 或 2010 c# .net 视频教程哪个比较好,请给个下载地址
- 求助!c#写xml的问题
然后在Visual Studio工具的Dos窗口下,CD到该目录,并运行以下命令(后面有解释):
csc /target:library MyCom.cs
regasm /tlb /codebase MyCom.dll
wscript.exe test.js// MyCom.cs
//
using System;
using System.Runtime.InteropServices;[assembly: ComVisible(true)]
[assembly: Guid("11cb4989-6094-4a8e-9355-111111111111")]namespace MyCom
{
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
public interface ICalc
{
int Add(int x, int y);
void SayHello();
} [ClassInterface( ClassInterfaceType.None )]
[ProgId("MyCom.MyCalc")]
public class MyCalc : ICalc
{
public int Add(int x, int y)
{
return x + y;
}
public void SayHello()
{
System.Windows.Forms.MessageBox.Show("Hello from C# COM");
}
}
}// test.js
//
MyCom = WScript.CreateObject("MyCom.MyCalc");
sum = MyCom.Add(10, 8);WScript.echo("The sum is " + sum);
MyCom.SayHello();csc /target:library MyCom.cs
是将MyCom.cs源文件编译为.Net类库。注:请先确认当前的途径可以使用csc。regasm /tlb /codebase MyCom.dll
将类库登记为COM对象。/tlb是要求产生并登记Type Library(用来具体描述该COM),/codebase指定如何找到该COM。这里可以忽略“该类库没有强命名”的警告。wscript.exe test.js
测试在javascript下调用C#对象。[ProgId("MyCom.MyCalc")]
给该COM对象取个容易引用的名字[ClassInterface( ClassInterfaceType.None )]
不公开继承自object的函数MyCom = WScript.CreateObject("MyCom.MyCalc");
在Javascript中创建一个COM对象sum = MyCom.Add(10, 8);
调用COM对象公开的接口