国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 皋兰县| 宣威市| 全椒县| 锡林浩特市| 上杭县| 沈阳市| 丹江口市| 若羌县| 丹江口市| 溧阳市| 余干县| 龙胜| 浮山县| 台湾省| 封开县| 方山县| 博罗县| 工布江达县| 阳泉市| 健康| 庆安县| 娱乐| 额尔古纳市| 海城市| 洪湖市| 永修县| 绿春县| 牙克石市| 黑山县| 灵丘县| 苍山县| 开平市| 东兴市| 博白县| 常州市| 钦州市| 兰州市| 屏东市| 义乌市| 汨罗市| 隆德县|