Перечисление всех объектов, реализующих IDispatch на машине
Вопрос
Я хотел бы перечислить все объекты, поддерживающие IDispatch, на машине.На данный момент мне нужно знать идентификатор класса или идентификатор программы, но для проверки моей машины я хотел бы знать, могу ли я просто перечислить все объекты, реализующие IDispatch.
Возможно ли это вообще?
Любая помощь приветствуется :)
Решение
Это очень странная просьба.Загвоздка в оговорке «все».Простого перечисления с помощью ключа HKCR ypelib и LoadTypeLib() недостаточно: COM-сервер не требуется для публикации библиотеки типов.На самом деле вам понадобится CoCreateInstance() для сокласса и QueryInterface для IDispatch.Это не только медленно, но и рискованно.
Возможно, вы получите лучший ответ, если объясните, почему вы на самом деле подумываете о том, чтобы сделать что-то подобное.Вызов IDispatch::Invoke() без какого-либо представления о том, что означают аргументы или каковы могут быть побочные эффекты, — это путь к катастрофе.Держитесь подальше от названий методов, таких как «ReformatDrive».