Перечисление всех объектов, реализующих IDispatch на машине

StackOverflow https://stackoverflow.com/questions/1756242

  •  20-09-2019
  •  | 
  •  

Вопрос

Я хотел бы перечислить все объекты, поддерживающие IDispatch, на машине.На данный момент мне нужно знать идентификатор класса или идентификатор программы, но для проверки моей машины я хотел бы знать, могу ли я просто перечислить все объекты, реализующие IDispatch.

Возможно ли это вообще?

Любая помощь приветствуется :)

Это было полезно?

Решение

Это очень странная просьба.Загвоздка в оговорке «все».Простого перечисления с помощью ключа HKCR ypelib и LoadTypeLib() недостаточно: COM-сервер не требуется для публикации библиотеки типов.На самом деле вам понадобится CoCreateInstance() для сокласса и QueryInterface для IDispatch.Это не только медленно, но и рискованно.

Возможно, вы получите лучший ответ, если объясните, почему вы на самом деле подумываете о том, чтобы сделать что-то подобное.Вызов IDispatch::Invoke() без какого-либо представления о том, что означают аргументы или каковы могут быть побочные эффекты, — это путь к катастрофе.Держитесь подальше от названий методов, таких как «ReformatDrive».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top