一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

2021-10-08 11:22 C/C++

這篇文章主要介紹了vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前提條件

  1、掌握c++基礎(chǔ)語法

  2、平臺安裝 vs2019

  3、本地平臺為 windows 10 1909 x64

  4、了解vbs基礎(chǔ)語法

本次目標(biāo)

  1、掌握com組件的概念及原理

  2、編寫一個簡單的以dll形式展現(xiàn)的com組件

  3、通過 vbs 實(shí)現(xiàn)跨語言調(diào)用com

1、com組件概念及原理

  什么是com:

    引用百度百科:com component(com組件)是微軟公司為了計(jì)算機(jī)工業(yè)軟件生產(chǎn)更加符合人類的行為方式開發(fā)的一種新的軟件開發(fā)技術(shù)。在com構(gòu)架下,人們可以開發(fā)出各種各樣的功能專一的組件,然后將它們按照需要組合起來,構(gòu)成復(fù)雜的應(yīng)用系統(tǒng)。由此帶來的好處是多方面的:可以將系統(tǒng)中的組件用新的替換掉,以便隨時進(jìn)行系統(tǒng)的升級和定制;可以在多個應(yīng)用系統(tǒng)中重復(fù)利用同一個組件;可以方便的將應(yīng)用系統(tǒng)擴(kuò)展到網(wǎng)絡(luò)環(huán)境下;com與語言,平臺無關(guān)的特性使所有的程序員均可充分發(fā)揮自己的才智與專長編寫組件模塊。

    (個人理解:com組件就是一種標(biāo)準(zhǔn),遵循此標(biāo)準(zhǔn)開發(fā)出來的組件則為com組件,同樣任何語言只要遵循此標(biāo)準(zhǔn),就可以調(diào)用該組件。而com組件本質(zhì)上就是二進(jìn)制可執(zhí)行文件,com以 dll 或 exe 形式發(fā)布的)

  什么是atl:

    引用百度百科:atl是activex template library 的縮寫,它是一套c++模板庫。使用atl能夠快速地開發(fā)出高效、簡潔的代碼(effective and slim code),同時對com組件的開發(fā)提供最大限度的代碼自動生成以及可視化支持。為了方便使用,從microsoftvisual c++5.0版本開始,microsoft把a(bǔ)tl集成到visual c++開發(fā)環(huán)境中。1998年9月推出的visual studio 6.0 集成了atl 3.0版本。atl已經(jīng)成為microsoft標(biāo)準(zhǔn)開發(fā)工具中的一個重要成員,日益受到c++開發(fā)人員的重視。

    (個人理解:atl 就是微軟發(fā)布的一個c++模板目的是為了簡化com編程)

  什么是activex:

    引用百度百科:activex是microsoft對于一系列策略性面向?qū)ο蟪绦?/a>技術(shù)和工具的稱呼,其中主要的技術(shù)是組件對象模型(com)。在有目錄和其它支持的網(wǎng)絡(luò)中,com變成了分布式com(dcom)。activex 控件是用于互聯(lián)網(wǎng)的很小的程序,有時稱為插件程序它們會允許播放動畫,或幫助執(zhí)行任務(wù),如在 microsoft update 安裝安全更新,因此可以增強(qiáng)您的瀏覽體驗(yàn)。在創(chuàng)建包括activex程序時,主要的工作就是組件,一個可以自足的在activex網(wǎng)絡(luò)(windows,mac,linux)中任意運(yùn)行的程序。這個組件就是activex控件。activex是microsoft為抗衡sun microsystems的java技術(shù)而提出的,此控件的功能和java applet功能類似。

    (個人理解:activex就是com組件集合的名字,并且主要用在web方面,本質(zhì)上就是com)這里引用的詞條[ 大白話容易理解 ]

2、編寫一個簡單的com組件

  vs2019 新建基于atl模板的項(xiàng)目 下一步

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  設(shè)置項(xiàng)目名 (注意:項(xiàng)目名一定要記住) 然后創(chuàng)建

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法 

  設(shè)置atl項(xiàng)目屬性 (這里設(shè)置基于.dll 方式)

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  這里說一下“支持組件注冊”指的是 編譯結(jié)束后會自動進(jìn)行組件注冊

  選擇后點(diǎn)擊確定,并等待創(chuàng)建完成

  

  完成后會出現(xiàn)comtest和comtestps,不用管ps

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  我們點(diǎn)開comtest并且可以看到系統(tǒng)自動生成的頭文件和源文件

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法 

  現(xiàn)在添加一個新的atl對象

  右鍵comtest 新建項(xiàng)->添加->新建項(xiàng)

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  對 comtest 新建 “atl簡單對象”并點(diǎn)擊添加

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  設(shè)置短名稱為temp 其他的會自動填充

  progid 設(shè)置為 項(xiàng)目名+“.”+短名稱 (comtest.temp )

  文件類型以及其他默認(rèn)就好點(diǎn)擊完成

  這里需要注意兩個值

  progid 是之后 vbs 及其他語言 調(diào)用組件所需要提供的名稱

  接口 itemp 為之后配置 idl 所需要找到的接口名

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  完成后會在comtest 下自動添加 temp.h 以及 temp.cpp以及生成一個ctemp類

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  現(xiàn)在就可以創(chuàng)建我們自己的方法

  temp.h頭文件中給ctemp添加函數(shù)聲明  

vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  在 temp.cpp 文件中實(shí)現(xiàn)此函數(shù)

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  值得一提的是

  __result 必須為指針用來進(jìn)行返回

  return 默認(rèn)為 s_ok表示執(zhí)行成功

  定義好方法后打開 comtest.idl

  還記得我們在創(chuàng)建atl簡單對象時候設(shè)置的“短名稱”嗎 (itemp 自動命名規(guī)則為 i+短名稱)

  找到這一段 interface itemp : idispatch  

vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  在interface itemp : idispatch 里面寫入

vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  [in] 表示 輸入[out] 表示輸出 [retval] 表示作為返回值給外界

  值得一提的是 retval 必須只能有一個 而且必須跟在out 后面

以上就寫好了comtest組件的全部內(nèi)容

  選擇生成的位數(shù) x64快捷鍵 ctrl + b 生成 dll

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  這里會看到生成報(bào)錯

  不用管他 打開我們的項(xiàng)目目錄

vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  可以看到第一個為生成的comtest.dll 接下來 注冊com組件

  這里注意兩個文件

  comtest.dll 為 com 組件本體

  comtest.tlb 是之后c++ 調(diào)用com所需要包含的文件  

vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  管理員權(quán)限打開 cmd 或者 powershell  

  并進(jìn)入到dll存在的目錄

  輸入命令注冊我們的dll

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  輸入后會出現(xiàn) 已成功

  如果不成功嘗試在管理員權(quán)限下去注冊

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

3、通過 vbs 實(shí)現(xiàn)跨語言調(diào)用com

  編寫vbs代碼 comtest.temp為“atl簡單對象”設(shè)置的“progid”而number為類中的函數(shù)名

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

  保存并運(yùn)行 執(zhí)行成功

  vs2019 Com組件初探之簡單的COM編寫及實(shí)現(xiàn)跨語言調(diào)用的方法

注意事項(xiàng):

  vbs調(diào)用的com必須為idispatch 接口

  vs2019 atl 默認(rèn)為 繼承 idispatch 接口

  com組件必須注冊后vbs才可以調(diào)用

github源碼地址

  3065190005/comtest: comtest code (github.com)

到此這篇關(guān)于vs2019 com組件初探之簡單的com編寫及實(shí)現(xiàn)跨語言調(diào)用的方法的文章就介紹到這了,更多相關(guān)vs2019 com組件內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/MF-Blog/p/14063897.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美黑人一级 | 大胆暴露亚洲美女xxxx | 肉宠文很肉到处做1v1 | 动漫在线观看h | 欧美一二区视频 | a级毛片毛片免费观看永久 a级黄色片免费 | 国内揄拍国内精品久久 | 扒开大腿狠狠挺进视频 | 精品在线播放视频 | 91色爱 | 久久精品视频在线看 | 视频亚洲一区 | 久久中文字幕综合不卡一二区 | 性美国人xxxxx18 | 金莲一级淫片aaaaaa | porno xxxx日本| 国产色网址 | 高清国产精品久久久久 | 91制片厂制作传媒免费版樱花 | 操美女网址 | 欧美日韩国产亚洲人成 | 91李宗精品72集在线观看 | 国产精品久久久久久久牛牛 | 欧美一级片在线看 | 欧美洲大黑香蕉在线视频 | 52av我爱avhaose01 51香蕉视频 | 久久精品中文騷妇女内射 | 国产高清自拍视频 | 久久国产综合精品欧美 | 成人a级特黄毛片 | 天天干天天日天天射天天操毛片 | 国产在线视频第一页 | 冰雪奇缘1完整版免费观看 变形金刚第一部 | 国产精品久久久久久久久99热 | 亚洲qvod图片区电影 | 草草草草视频 | 羞羞视频动漫 | 精品午夜中文字幕熟女人妻在线 | 三叶草私人研究所 | 日韩无遮挡大尺度啪啪影片 | 国产精品成人麻豆专区 |