2009-11-18 3 views
0

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

Возможно ли это?

Любая помощь была бы оценена :)

ответ

1

Это очень странный запрос. Втир входит в «все» условия. Простое перечисление с помощью ключа HKCR \ Typelib и LoadTypeLib() недостаточно, сервер COM не обязан публиковать библиотеку типов. Фактически вам придется использовать CoCreateInstance() для coclass и QueryInterface для IDispatch. Это не только медленно, но и рискованно.

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

+0

Это действительно учебное упражнение в поиске реализации IDispatch. Помимо всего прочего, им интересно узнать, что доступно или плохо, или un, задокументировано. Я надеялся, что вы сможете создать IEnum *, чтобы найти их все. Я предполагаю, что все идентификаторы ClassID находятся в реестре или это нет, обязательно, в случае ... – Goz

+0

Я должен добавить, что я полностью осведомлен о хаосе, который я мог случайно развязать, но, в равной степени, я очень хорошо знаю власть, которую можно получить от этого ... – Goz

Смежные вопросы