国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

創(chuàng)建C# COM對象的方法

開發(fā) 后端
本文介紹用什么方式創(chuàng)建C# COM對象也成了我們必須面對的一個問題.據(jù)我所知道的創(chuàng)建C# COM對象的方法一共有幾種。

用C#做WinForm程序,時間長了難免會遇到和COM組件打交道的地方,用什么方式創(chuàng)建C# COM對象也成了我們必須面對的一個問題.據(jù)我所知道的創(chuàng)建C# COM對象的方法一共有以下幾種:

1.使用.NET包裝COM組件

這是最簡單的就是導(dǎo)入COM組件所在的DLL,讓IDE生成。NET一個IL包裝加到項目中,這樣原來COM里面所有實現(xiàn)了IDispatch,Dual的COM類型及其相關(guān)類型就可以直接在。NET程序里面使用,比如以前在2003時代,想要寫自己的基于IE的瀏覽器,就得手動加入與IWebBrowser2接口相關(guān)的DLL,這種方式是大家最常用的,也是最傻瓜化的,因此也沒什么可解釋的。

但是這種方式有個至命的缺點——不是所有的C# COM對象都能用這種方式導(dǎo)出。正如前面所說的,只有實現(xiàn)了IDispatch,Dual類型的接口才支持被導(dǎo)出,而且面對不同版本的COM或許會生成不一樣的導(dǎo)出DLL,比如說A機器上寫代碼時導(dǎo)入了一個Jet2.6版本的包裝DLL,代碼編譯了拿到B機器上去運行,但是B機器上的Jet版本是2.8的,就可能會出現(xiàn)運行時錯誤。

2.用反射動態(tài)創(chuàng)建

包括使用Type.GetTypeFromCLSID和Type.GetFromProgID兩種方法獲取COM對象的Type再創(chuàng)建.這種方式也好理解,就是說使用這兩個方法之前,必須得知道COM對象的GUID或ProgID,好在這也不是什么難事,一般我們要使一個COM對象,多多少少都了解一些這個COM對象的GUID或ProgID信息.用這種方獲取到了一個Type對象后,就可以用.NET里面通用的反射創(chuàng)建對象的方法來做了.

這里給出一個創(chuàng)建JetEngine 的COM對象的代碼實例:

  1. publicobjectGetActiveXObject(Guidclsid)  
  2. {  
  3. TypeTypet=Type.GetTypeFromCLSID(clsid);  
  4. if(t==null)returnnull;  
  5.  
  6. returnActivator.CreateInstance(t);  
  7. }  
  8.  
  9. Guidg=newGuid("DE88C160-FF2C-11D1-BB6F-00C04FAE22DA");//JetEngine  
  10. objectjet=GetActiveXObject(g); 

是不是覺得***調(diào)用GetActiveXObject(g)的地方和IE里面Javascript里面用new ActiveXOjbect創(chuàng)建COM對象的方法很相像?

3.聲明CoCreateInstance外部函數(shù),用這個函數(shù)去創(chuàng)建相應(yīng)的COM實例

M$在2005里面包裝的WebBrowser控件內(nèi)部就是用這個函數(shù)去創(chuàng)建的, 使用這種方式創(chuàng)建COM,就跟在C++里面不什么兩樣了.有一點需要說明的是,一般我們在代碼中引入外部方法的時候,方法的參數(shù)和返回值的類型不一定是唯一的一種,只要在邏輯上相互能轉(zhuǎn)化,一般都可以使用.

比如說如下幾種聲明都是正確的:

  1. [return:MarshalAs(UnmanagedType.Interface)]  
  2. [DllImport("ole32.dll",ExactSpelling=true,PreserveSig=false)]  
  3. publicstaticexternobjectCoCreateInstance([In]refGuidclsid,  
  4. [MarshalAs(UnmanagedType.Interface)]objectpunkOuter,intcontext,[In]refGuidiid);  
  5.  
  6. [DllImport("ole32.dll",ExactSpelling=true,PreserveSig=false)]  
  7. publicstaticexternIntPtrCoCreateInstance([In]refGuidclsid,  
  8. IntPtrpunkOuter,intcontext,[In]refGuidiid);  
  9.  
  10. [DllImport("ole32.dll",ExactSpelling=true)]  
  11. publicstaticexternintCoCreateInstance([In]refGuidclsid,  
  12. IntPtrpunkOuter,intcontext,[In]refGuidiid,[Out]outIntPtrpVoid);  
  13.  
  14. [DllImport("ole32.dll",ExactSpelling=true)]  
  15. publicstaticexternintCoCreateInstance([In]refGuidclsid,  
  16. [MarshalAs(UnmanagedType.Interface)]objectpunkOuter,intcontext,  
  17. [In]refGuidiid,[MarshalAs(UnmanagedType.Interface),Out]outobjectpVoid); 

甚至于當(dāng)你有里面對應(yīng)的接口類型的聲明的時候,完全可以把上面的object或IntPtr換成相應(yīng)的接口類型,前提是你的接口類型的聲明一定要正確.讀者中用C++做過COM的一定對這種方式記憶猶新吧,只不過這里不再需要什么CoInitialize和CoUninitialize,.NET內(nèi)部自己幫你搞定了.順便提一下,上面例子中的object與IntPtr聲明是相通的,我們可以用Marshal.GetObjectForIUnknown和Marshal.GetIUnknownForObject這兩個方法在object和IntPtr之間互轉(zhuǎn),前題當(dāng)然是這兩種方式所指向的都是C# COM對象才行.這種方式提供的傳入?yún)?shù)最多,創(chuàng)建C# COM對象也最靈活.

【編輯推薦】

  1. 簡單介紹C#預(yù)處理
  2. 學(xué)習(xí)C#無詞尾符號經(jīng)驗談
  3. C#調(diào)用QuickTest自動化
  4. 詳解C#正規(guī)表達式
  5. C#字符串插入html標(biāo)簽
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-08-10 13:40:46

創(chuàng)建C# COM對象

2009-08-21 17:45:40

C#調(diào)用COM對象

2009-08-03 11:32:49

C#調(diào)用COM對象

2009-09-18 19:09:41

C# COM組件

2009-07-03 10:33:07

C#創(chuàng)建COM組件

2009-09-24 14:59:38

C#編寫COM組件

2009-08-25 17:28:23

C#創(chuàng)建DataSet

2009-08-03 14:36:08

c#組件

2009-08-19 14:35:12

C++和C#相互調(diào)用C

2009-09-02 16:43:55

C#調(diào)用Excel的C

2009-08-21 09:14:47

C# Excel CO

2009-08-24 17:46:54

C#創(chuàng)建XML文檔

2009-08-05 15:10:19

C#調(diào)用GoogleE

2009-09-02 14:18:08

C#聲明COM接口

2009-08-20 11:03:34

Visual C#使用

2009-09-24 15:10:54

C#調(diào)用COM組件

2009-08-11 10:12:21

2009-08-10 14:03:08

C# COM接口

2009-08-28 16:50:25

C# PromptPo

2009-08-20 17:13:37

C# FileSyst
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲欧美日韩中文在线| 91丨porny丨国产| 日韩成人在线观看| 高h视频在线| 亚洲欧美另类综合偷拍| 黄色一级视频播放| 亚洲尤物在线| 亚洲bt天天射| 精品盗摄女厕tp美女嘘嘘| 精品99一区二区| 午夜在线播放| 欧美一区二区在线播放| 成人永久免费网站| 亚洲愉拍自拍另类高清精品| 日本黑人久久| 久久婷婷国产精品| 亚洲网站在线| 国产精品久久久久久久久久新婚| 亚洲成人人体| 亚洲男人7777| 国偷自产一区二区免费视频| 欧美成人高清电影在线| 9999在线视频| 久久久成人的性感天堂| 国产婷婷视频在线| 日韩av中文字幕在线| 黑人精品视频| 另类色图亚洲色图| 国产极品模特精品一二| 国内精品模特av私拍在线观看| 亚洲精品观看| 99国产视频| 国产麻豆视频一区二区| 真人抽搐一进一出视频| 国产精品久久久久久久浪潮网站 | 91超碰在线免费观看| 国语精品一区| 国产z一区二区三区| 在线观看的日韩av| 最新视频 - x88av| 原千岁中文字幕| 色综合久久久久综合体桃花网| 成年人在线免费观看| 欧美日韩激情美女| 日韩大片免费观看| 国产精品美女在线| 欧美aaaaaaaaaaaa| 国产精品久久久久久久app| 永久亚洲成a人片777777| 久久精品国产美女| 伊人久久亚洲影院| 欧美日韩黄色一级片| 国产精品羞羞答答xxdd| 黄色三级视频片| 91精品国产91久久久久久一区二区| 第四色男人最爱上成人网| 国产精品自产拍高潮在线观看| 精品在线一区二区三区| 毛片网站在线| 欧美国产欧美亚洲国产日韩mv天天看完整 | 精品在线小视频| 这里只有精品在线| 中文字幕国产免费| 中文字幕欧美日韩在线| 欧美国内亚洲| 中文字幕在线免费观看| 999久久久精品国产| 九九99玖玖| 欧美性猛交xxxxxx富婆| 青青草原综合久久大伊人精品 | 老牛国内精品亚洲成av人片| 亚洲精品日韩欧美| 三区在线观看| 国产精品久久看| 理论视频在线观看| 国产日韩欧美亚洲| 久草在线中文最新视频| 国产午夜精品全部视频播放 | 久久精品午夜福利| 日韩在线中文字| 国产精品福利在线播放| 三级精品视频| 97最新国自产拍视频在线完整在线看| 狠狠色噜噜狠狠狠狠色吗综合| 4438x成人网最大色成网站| 蜜臀av一区二区在线免费观看| 国产成+人+综合+亚洲欧美| 成人18免费入口| 国产精品日韩欧美一区二区| 日韩一区二区三区免费看 | 亚洲精品黄色| 影音成人av| wwwav91| 亚洲欧美国产精品桃花| 国产精品高清在线| 亚洲精品自拍偷拍| 欧美性猛交xxxx偷拍洗澡| 久久久久一区二区三区四区| 国产精品毛片久久| 亚洲日本va中文字幕| 国产免费av在线| 91福利电影| 日韩少妇中文字幕| 国产精品久久av| 久久久精品久久| 欧美系列一区二区| 狠狠色狠狠色综合日日小说| xfplay精品久久| 日本vs亚洲vs韩国一区三区| 国产一区99| 999精品视频在线观看| 性欧美猛交videos| 第九色区av在线| 一区二区三区四区在线免费视频| 三级短视频在线| 88av在线| 日本成人一区| 国产女女做受ⅹxx高潮| 精品无人区一区二区三区竹菊| 日韩在线观看免费全集电视剧网站| 国产a久久麻豆| 中文无码久久精品| 日本在线影院| 天使と恶魔の榨精在线播放| 91久久大香伊蕉在人线| 欧美贵妇videos办公室| 91精品91久久久中77777| 天天色天天爱天天射综合| 亚洲精品免费在线观看| 亚洲免费观看高清在线观看| 自拍偷拍国产亚洲| 国产在线播放一区| japansex久久高清精品| www.xxx亚洲| 欧美黑人xxxⅹ高潮交| 亚洲免费在线视频一区 二区| 亚洲第一论坛sis| 国产三级电影在线观看| 精品丰满人妻无套内射| zzijzzij亚洲日本成熟少妇| 日韩一区欧美一区| 丝袜美腿亚洲一区| 亚洲电影一级片| 成人免费看视频网站| 好男人看片在线观看免费观看国语| 韩国精品一区二区三区六区色诱| 亚洲精品一区二区久| 亚洲美女视频在线观看| 蜜臀av性久久久久蜜臀aⅴ| 欧美女王vk| 黄色精品视频| 国产欧美黑人| 一本一道dvd在线观看免费视频| 国产精品视频专区| 日韩经典中文字幕在线观看| 久久99精品国产.久久久久久| av电影免费在线看| 欧美黑人经典片免费观看| 成人疯狂猛交xxx| 欧美成人中文字幕| 欧美日韩在线三区| 亚洲男同性视频| av激情亚洲男人天堂| 亚洲欧美日韩在线观看a三区| 亚洲视频综合在线| 亚洲成人三区| 日韩少妇内射免费播放18禁裸乳| 最近2019中文字幕一页二页| 久久久亚洲高清| 日韩精品一卡| 成人福利在线观看视频| 300部国产真实乱| 久久国产精品影视| 婷婷开心久久网| 奇米影视一区二区三区| 电影中文字幕一区二区| 在线免费av网址| 亚洲人一区二区| 亚洲 日韩 国产第一| 欧美午夜精品久久久久久超碰 | 欧美日韩中文一区| 国产福利一区二区三区| 一区二区中文字幕在线观看| 一区二区三区区四区播放视频在线观看| 欧美激情专区| 九九久久久久久久久激情| 色中色一区二区| 成人深夜在线观看| 婷婷综合视频| 国产 日韩 欧美一区| 成人黄色影视| 天堂av一区二区| 青青久久av北条麻妃黑人| 精品污污网站免费看| 99r国产精品| 亚洲黄色一区| 国产精品主播在线观看| 男女视频在线| 久草免费在线播放| 97干在线视频|