1. 程式人生 > >js裡怎樣呼叫c#寫的dll

js裡怎樣呼叫c#寫的dll

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>