Support Statement: How to get the list of COM interfaces implemented by a COM class
Q: Some properties and methods of GUI controls don't appear in AnaRef under the name of their control but under the name of an Interface. For example ProgressBar is supporting IProgressBar and Min, Max and Value are seen through the interface.
When we analyze AnaRef to list all properties and methods that must be migrated for a given control we need to query the control class name but also the possible interfaces.
Sometimes it is easy, ProgressBar and IProgressBar for example. But this is not a systematic rule.
When we analyze AnaRef to list all properties and methods that must be migrated for a given control we need to query the control class name but also the possible interfaces.
Sometimes it is easy, ProgressBar and IProgressBar for example. But this is not a systematic rule.
Question : How to get the list of all interfaces supported by a Control class?
A: This information can be found by examining the IDF. At the bottom of the file, there is a collection of coclass elements. The subclass elements within these coclasses is the set of implemented interfaces.
The system model contains this information. See for example this subreport in the VBI audit:
Detailed Description of Class MSComctlLib.IProgressBar with root address 78642: Property | Content -------- | ------- Parent Library | MSComctlLib Parent Interface | IDispatch:32224 Default Property | ControlDefault Containing coclass | ProgressBar Migrate Status | none Migrate Flags | none
So, it is also possible to get this using gmsl script commands or gmslAPI calls however I do not have that code handy.
See the system gmSL script auditVBI.gmsl for examples about how this information is accessed.