js里怎样调用c#写的dll

JavaScript028

js里怎样调用c#写的dll,第1张

js只支持Activex Dll(所谓的com组件).在C#里如下面的方法写.

然后js里注册该控件并调用.

里面有两个方法

Encrypt(string pToEncrypt,string sKey) //加密

Decrypt(string pToDecrypt,string sKey) //解密

然后你这样写代码:

using System

using System.Runtime.InteropServices

namespace 名称空间

{

// 首先建立接口,这个是Com必须使用的

[Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")]

public interface IEncrypt

{

string Encrypt(string pToEncrypt,string sKey)

string Decrypt(string pToDecrypt,string sKey)

}

// 写接口的实现

[Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]

public class 类名称 : IEncrypt

{

public string Encrypt(string pToEncrypt,string sKey)

{

// 复制FAQ加密代码

}

public string Decrypt(string pToDecrypt,string sKey)

{

// 复制FAQ解密代码

}

}

}

然后用vs.net打包成.dll类库文件,假设名称为MyEncrypt.dll

然后用如下工具

regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb

这个.tlb文件就是类型库,可以由vb6和vc++6引用。

注意上面的guid是使用vs.net工具菜单里面的创建guid工具生成的。

还要注意,vs.net自动生成的assemblyinfo.cs文件中必须添加强名称和版本号,因为Com组件需要版本号,不要改动版本号,也不要用vs.net自动的1.*这样的版本号,最好使用

1.1.1.1这样的固定版本,而且必须一次添加,不能多次添加。

regasm后怎样在js里调用?

用你的例子是这样?

var ss = new ActiveXObject("MyEncrypt.类名称")

JS不可以调用普通的Dll动态链接库,但你可以使用new ActiveXObject调用ActiveX DLL,如:

<script>

set z_shell= CreateObject( "WScript.Shell" )

z_shell.Run( "command.com /c mkdir " + "c:\NewDir")

</script>

其实 js本来就是前台脚本,把js文件编译成dll供页面调用也可以实行

方法:

1.在解决方案中添加一个新项目(类库:JSControl)

2.在新项目中添加要用的JS脚本(JScript1.js)

脚本的内容:

function testAlert() {

alert("Hello!")

}

3. 改变JScript1.js的属性,Build Action为Embedded Resource(嵌入的资源)

4.在JSControl项目的AssemblyInfo.cs文件添加一行:(注意

JSControl.JScript1.js,JSControl是js所在项目的命名空间)

//定义组件内的内嵌资源的元数据属性

[assembly: System.Web.UI.WebResource("JSControl.JScript1.js", "application/x-javascript")]

注意:这边要增加个引用:System.Web.dll

5. 项目中增加一个注册客户端脚本的类:

6.在网站项目中引用JSControl项目,编译后生成

JSControl.dll

7.在要调用脚本的页面注册JSControl.dll

<%@ Register Assembly="JSControl" Namespace="JSControl"

TagPrefix="zhi" %>

8.引用脚本

1、javascript可以调用delphi开发的DLL、ActiveX,不需要安装运行环境;

2、首先确保你的delphi程序不要带包编译;

3、程序发布时连同borlandmm.dll一起发布