js里怎样调用c#写的dll

JavaScript017

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>

首先注册DLL:

regsvr32.exe D:\xxx.dll

如我的xxx.dll在D盘,注册如上方法。

或者直接引用<!--METADATA TYPE='typelib' FILE='D:\xxx.dll' -->

然后调用DLL方法

Set dice1=Server.Createobject('MyDLL.diclass')

'使用set语句创建dice1对象,其中MyDLL是上面创建dll文件时的工程名称(注意:不是文件的名称),diclass为类模块的名称。至此我们就可以用Maxpoint,Result和Throw属性(方法)来对dice1对象进行操作。

比如 里面的有一个方法axx()调用如下

dice1.axxx

1.对于64位机器,将厂商提供的.dll文件拷贝到 C:\Windows\System32 目录下,将.ocx文件拷贝到C:\Windows\SysWOW64 目录下。

2.注册*.ocx文件。管理员身份。在“运行”中直接输入“regsvr32 c:\Windows\SysWOW64\ZT_DIT.ocx”.将其注册成功,如果注册失败,有可能是没有取得管理员权限,根据报错内容在网上搜索解决办法。

3.注册成功后,需要取得注册的.ocx的classid,便于在页面中引用。w+r(win10),打开运行。输入regedit,打开注册表,查找你注册的ocx

右键(复制项名称)将复制的粘贴到写字板,就知道clsid了, 取得clsid后写入带页面中,:

eg: <OBJECT id="ZTIDC"  style="width:400pxheight:500" type="application/x-oleobject" classid="CLSID:2BC73BDF-3532-441D-9F50-00649C2ADB85">

</OBJECT>

这样,在ie中就可以调用了!但是,在火狐和谷歌调用不了,甚至连界面都出不来。

在网上下载了

将axhost.r39.xpi拖入到火狐浏览器,结果报:此附加组件无法安装。。。。经过查资料,要更改火狐的一些设置,地址栏键入:about:config 修改为false