簡體   English   中英

如何查找ActiveX控件的界面?

[英]How to find interfaces of an ActiveX control?

給定一個ActiveX控件的實例,我該如何枚舉它的接口? (我想得到接口的名稱)。

像其他人提到的那樣,唯一的方法是QueryInterface用於所有可能的接口。 這正是Microsoft工具OleView為您所做的。

不幸的是,這不是COM的目的。 在基本COM級別,您只需詢問一個對象是否支持特定的UUID標識的接口,一次一個。 由於有很多潛在的UUID,因此獲得詳盡的列表需要花費相當多的時間! 雖然大多數對象實現將在內部跟蹤支持的接口列表,但是沒有標准的COM方法從外部訪問這些列表。 即使有,你也只能通過在注冊表中查看他們的UUID來獲得接口的程序化名稱,這並不總是可靠的。

ActiveX對象(一個棘手的術語!)傾向於通過IDispatch支持自動化。 如果對象表現良好,您將能夠通過GetTypeInfo() 獲得有關它們支持的方法的一些信息 將不包括方法所屬的接口名稱(如果有)。

總而言之,COM在對象元數據方面相當差。

沒門。 COM接口背后的想法是你問對象 - “如果你支持它,請給我接口XYZ”並且對象決定如何響應 - 提供對自身的引用或暴露某些內部對象的接口等。所以你可以'知道對象“支持”的接口,而不是如上所述詢問對象。這是COM設計者的設計決策。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM