日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows下,使用dumpcpp 方式访问 COM 接口的方法

發布時間:2025/3/15 windows 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows下,使用dumpcpp 方式访问 COM 接口的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本人在windows上進行開發,主要是使用 ATL 進行 COM開發,然后使用 MFC 作客戶端調用COM接口。后來自己想寫個輔助的開發工具,也想學習QT這個開發框架,所以就決定使用 QT 開發這個輔助的工具。但由于對 QT 不熟悉,所以不懂得如何調用 COM 接口,并且關于這方面的資料也不多。后來在 XChinux 的指導下,簡單地看了下 QAxContainer模塊的內容,明白了調用 COM 接口的方法還是有許多的,但我比較喜歡通過 dumpcpp 的方式生成 QT 對 COM 接口的 C++ 包裝類,再調用。這里有個好處就是可以使用代碼自動完成功能,而省去了通過函數原型調用還要一個一個地查看接口方法原型的工作。
????? 下面這些步驟主要是根據 QT 的 DUMPCPP 工具所寫的,自己加以實踐的成果,希望對需要這方面知識的人能夠省去查找一大堆資料的麻煩。
1 使用庫?
?? ?構造使用COM對象和ActiveX控件的Qt應用程序,需要向.pro文件中加入?

CONFIG += qaxcontainer?

?? ?來連接到QAxContainer模塊 。
1.1. 配置QAxContainer應用程序?
??? QaxContainer庫是靜態的,因此使用這個模塊的時候不需要重新分配任何額外的文件。但要注意,你所使用的提供ActiveX服務的二進制文件必須被安裝在目標系統中,因此你需要把它們裝在你的發布包中并在你的應用程序安裝過程中為它們注冊。?
2. 初始化COM對象?
???? 可以通過使用QAxBase::setControl() 或 直接把對象的名字傳到QAxBase子類的構造器中來初始化一個COM對象。?
???? 控件能通過多種格式指定,但最快且功能最強的格式是直接使用對象的Class ID(CLSID)。 Class ID能考慮到這個對象涉及別的機器時信息的變化,而且能為需要license的控件包括一個license key。?
3. 訪問對象API?
模塊提供了訪問COM對象的Qt API來取代COM的數據類型。有4種方法去調用訪問COM對象的API,這里只介紹第一種:?
???????? ? Generating a C++ namespace
???????? ? Call-by-name
???????? ? Through a script engine
???????? ? Using the native COM interfaces
3.1. 生成 C++ 命名空間
??? 用dumpcpp 工具可以為想要訪問的類型庫生成一個C++名空間。需要手動對你要用的類型庫使用這個工具, 或者也可以通過向.pro文件中的變量TYPELIBS添加類型庫來把它整合到編譯系統中(我自己試過,但沒成功,不知道有沒有人成功過,所以我使用手動生成C++包裝類的方式):?

TYPELIBS = file.tlb?

?? ?注意,dumpcpp不一定能列出類型庫中所有的API。 把生成的頭文件包含進你的代碼中,通過生成的C++類來訪問對象API。 更多信息可以參考示例Qutlook。
3.2 使用 dumpcpp 工具生成類型庫的步驟:
3.2.1
?? ?先將 dumpcpp 工具所在的 bin 目錄添加到系統路徑中。
3.2.2
?? ??運行 cmd 命令,打開命令行窗口,并輸入如下的命令:

??? 其中,-n zserver 參數表示將COM接口導出為 zserver命名空間,后面花括號中的內容表示COM接口的CLSID,注意,這樣導出將會在指定目錄產生兩個C++文件: zserver.h 與zserver.cpp,并且導出的文件中包含COM接口所在的組件的全部接口信息。即,如果zserver組件中含有 Interface1 與Interface2 兩個接口,使用 dumpcpp 命令時,參數用的是 Inteface1 的接口ID,那么導出的C++文件中將包含Interface2 接口的信息。
3.2.3
?? 將導出的命名空間添加到 QT 工程所在的目錄下,并添加到工程的 pro 文件中,即可正常使用。注意使用命名空間前綴。

?

轉自:http://www.qtcn.org/bbs/read.php?tid=23559

總結

以上是生活随笔為你收集整理的Windows下,使用dumpcpp 方式访问 COM 接口的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。