国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET 和 COM 之間的相互訪問

2024-07-10 12:59:20
字體:
來源:轉載
供稿:網友
本文將介紹,如何在.net 客戶端中來訪問com 組件,以及在com 客戶端中來訪問.net 組件。
com 的本質就是代碼之間的相互通信。在.net 中代碼之間的相互通信并不是采用 com 的形式 ,因此你無法直接在一個com 的客戶端與 .net 的組件進行通信。在這里需要采用ccw (com callable wrapper)來完成這樣的操作,ccw 在這里作為一個.net 對象的代理,同樣的,假 如要在.net 客戶端與 com 組件來進行通信,需要利用rcw(runtime callable wrapper)來充當這 樣一個代理。

com 的客戶端與 .net 的組件進行通信

下面的范例講演示一個vb6 的客戶端利用ccw 訪問一個vb.net 的組件

一個vb.net 組件(testccw.vb)


imports system
namespace ccwcomponent
public class ccwclass
public function passstr as string
passstr = "hi from .net component"
 end function
end class
end namespace



將以上代碼存儲為testccw.vb文件,然后以如下語句進行編譯:


vbc /t:library testccw.vb


vbc 編譯器將會產生一個testccw.dll 文件,這是一個.net 的 assembly,下一步為testccw.dll 創建一個ccw 代理。regasm 工具能夠注冊一個.net 組件,并生成一個供com 客戶端來引用的 .tlb文件。
用如下語句:

regasm testccw.dll


這將只在注冊表中注冊.net 控件,這種方法應用于late binded 客戶端。
或者使用如下語句:

regasm testccw.dll /tlb:testccw.tlb


這將會創建一個testccw.tlb 文件,這種方法應用于early bingde 客戶端。

com client (vb6)
(late binded)

private sub command1_click()
dim o
set o = createobject("ccwcomponent.ccwclass")
msgbox o.passstr
end sub


同樣的客戶端也可以應用于early binded 客戶端,當然這需要在上一步輸出一個tbl文件,供 com 客戶端來引用。需要強調的是,客戶端必須和它所要調用的.net 組件在一個目錄下,或者 ,該組件存在于全局的 assembly 緩存中。

使用rcw(runtime callable wrapper)

下面的范例將介紹利用tlbimp 工具來創建一個com 組件的代理,供.net 客戶端來訪問。 com 服務器 comsrv.dll (mycom.comcomponent)

向一個activex dll 中添加如下代碼:

public function sayhi() as string
 sayhi = "hi from com component"
end function


組件編譯完成后用tlbimp 工具來創建一個代理:

tlbimp comsvr.dll /out c:/<path>


com 組件的代理將在指定目錄中生成。

vb.net 客戶端 (ntest.vb)

imports system
imports microsoft.visualbasic
imports mycom

class ntest
shared sub main
dim o as new mycom.comcomponent
msgbox (o.sayhi)
end sub
end class


保存為ntest.vb,然后編譯:

vbc /r:comsvr.dll ntest.vb

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定日县| 瑞昌市| 浦江县| 石台县| 登封市| 宁明县| 穆棱市| 南阳市| 安康市| 股票| 黎川县| 临海市| 芦溪县| 本溪| 乡宁县| 景宁| 梅河口市| 稻城县| 徐州市| 永昌县| 朔州市| 平潭县| 东乡| 泰顺县| 海南省| 安阳市| 榕江县| 乐昌市| 鹤峰县| 新余市| 仁寿县| 宣城市| 察隅县| 中卫市| 封开县| 织金县| 华蓥市| 平乐县| 潜山县| 准格尔旗| 丰镇市|