Было бы полезно, если бы вы дали немного больше информации о том, что именно вы делаете. Знаете ли вы, какие интерфейсы реализует объект и т. Д.?
В общем, API, который вы можете использовать в Google для более конкретной помощи, это CoCreateInstance. Вам нужно будет передать ему GUID объекта, с которым вы хотите играть. Все COM-объекты реализуют интерфейс IUnknown, и вы можете запрашивать любые другие, которые у него могут быть. Таким образом, некоторый пример псевдокода для начала может выглядеть примерно так:
CoInitializeEx( NULL, COINIT_APARTMENTTHREADED );
CoCreateInstance( CLSID,
ptrIUnknown,
ClassCxt, // generally CLSCTX_INPROC_SERVER,
riid , // reference id
(void **)&pRequest); // the interface that corresponds to the riid
Здесь вы можете запрашивать дополнительные интерфейсы, используя интерфейс IUnknown, который вы получили от ptrIUnknown.
Затем очистите с помощью
CoUninitialize()
Essential COM от Don Box - отличная книга на эту тему. Кроме того, просто для проверки того, как работает ваш COM-объект, использование чего-то вроде VBScript делает это очень просто. Кроме того, вероятно, стоит отметить, что GUID идентификатора класса хранится несколько необычным образом, поэтому, если вы просто извлекаете GUID из реестра, у вас могут возникнуть проблемы с определением порядка. Это, вероятно, для другого вопроса.