C#寫COM組件,JS調用控件


1、c#2005中新建項目,類型為類庫,項目名為AddCom確定。

  配置:右鍵點擊解決方案資源管理器中的AddCom,選擇“屬性”,選擇“生成”,選擇“為COM Interop注冊(_P)”

2、打開AssemblyInfo.cs文件,設置[assembly: ComVisible(true)],如果不改則不能被其他程序調用

3、編寫com組件會用到guid(全球唯一ID),編寫com組件必須要用到。c#會默認生成一個放在AssemblyInfo.cs,如沒有生成,網上下一個生成guid的軟件,有很多呢。

4、c#中源代碼如下,按如下方法編寫代碼后生成工程,/bin/release中得到AddCom.dll。

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace AddCom
{

[Guid("298D881C-E2A3-4638-B872-73EADE25511C")]
public interface AddComInterface
{
[DispId(1)]
int iadd(int a, int b);
}

[Guid("2C5B7580-4038-4d90-BABD-8B83FCE5A467")]
[ClassInterface(ClassInterfaceType.None)]

public class AddComService : AddComInterface
{
public AddComService()
{
}
public int iadd(int a, int b)
{
int c = 0;
c = a + b;
return c;
}
}
}

5、dos下利用 e:\regasm AddCom.dll 命令注冊com組件,可以理解為非.net平台下的regsvr32注冊dll組件。提示注冊成功即可。

regasm.exe一般存在C:\Windows\Microsoft.NET\Framework\v2.0.50727 ,如果提示不是命令符的話

C:\Windows\Microsoft.NET\Framework\v2.0.50727 \regasm   D:\test.dll  ( D:\test.dll 為dll所在目錄)

 

js調用com

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<OBJECT classid=CLSID:0045EA0A-2042-43F8-A2F4-B5CF54D45C10 id=COMTest width=0 height=0></OBJECT>
<script language="JavaScript"> 

alert("----------------------start-----------------------");
var wmp;
var iResult = 12345;
alert(iResult);

wmp = document.getElementById("ComTest"); 
alert(wmp );

if(wmp == null)
{
    alert(wmp );
}
else
{
    iResult = wmp.iadd(4,9);
    alert("Test Successful!");
}

alert("iadd(4,9) =" + iResult);
alert("----------------------start-----------------------");
</script>

</head>
</html>

如果需要js調用新方法,需要在接口里定義后,再在類里實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM