然后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调用dll中的方法也是ajax中一种实现,首先新新建类库,类库名字叫ajax好了,然后新建process.cs文件,代码如下:using System
using System.Web
namespace ajax
{
public class process:IHttpHandler
{
public bool IsReusable
{
get { return true}
}
public void ProcessRequest(HttpContext context)
{
context.Response.CacheControl = "no-cache"
context.Response.Write(DateTime.Now)
}
}
}
然后编译为ajax.dll
接着在web.config中添加
<configuration>
//IIS6
<system.web>
<httpHandlers>
<add verb="*" type="ajax.process,ajax" path="ajax.aspx"/>
</httpHandlers>
</system.web>
//IIS7
<system.webServer>
<handlers>
<add name="ajax" verb="*" type="ajax.process,ajax" path="ajax.aspx"/>
</handlers>
</system.webServer>
</configuration>
注意IIS6还要设.aspx的映射不检查文件是否存在。
最后创建test.htm文件:
<html>
<head>
<title>调用DLL中的处理</title>
<script type="text/javascript">
function getTime() {
var xmlHttp = new XMLHttpRequest()
xmlHttp.open("GET", "/ajax.aspx", false)
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
alert(xmlHttp.responseText)
}
}
xmlHttp.send(null)
}
</script>
</head>
<body>
<input type="button" value="getTime" onclick="getTime()" />
</body>
</html>