К сожалению, это не то, для чего предназначен COM.На базовом уровне COM вы можете просто спросить объект, поддерживает ли он определенный интерфейс, идентифицированный UUID, по одному за раз.Поскольку существует множество потенциальных UUID, получение такого исчерпывающего списка займет довольно много времени!Хотя большинство реализаций объектов отслеживают список поддерживаемых интерфейсов внутри, стандартного COM-способа доступа к этим спискам извне не существует.И даже если бы они были, вы могли бы получить только программное имя интерфейса, посмотрев их UUID в реестре, что не всегда надежно.
Объекты ActiveX (хитрый термин!) , как правило, поддерживают автоматизацию через IDispatch
.Если объекты хорошо себя ведут, вы сможете получить некоторую информацию о методах , которые они поддерживают, через GetTypeInfo()
.Это не будет включать имена интерфейсов (если таковые имеются), к которым принадлежат методы.
Подводя итог, можно сказать, что COM довольно слаб в метаданных объекта.