Как найти IID для исходящих COM-интерфейсов Office в C ++ без MFC или ATL? - PullRequest
1 голос
/ 11 октября 2010

Я пишу приложение, которое должно обрабатывать события, запускаемые Office - такие вещи, как «перед печатью» или «новый файл».

Из различных статей и примеров я понимаю, что должен использовать интерфейсы IConnectionPoint,Я получил ConnectionPointContainer для Word.Application с использованием QueryInterface.
Теперь я хочу запустить FindConnectionPoint, но я должен дать ему IID интерфейса, который я ищу, и я не знаю, где найтитот!Я думал о запуске EnumConnectionPoints, но это даст мне все точки подключения, и я не знаю, как определить, какие из них мне нужны.

Как узнать IID?

1 Ответ

0 голосов
/ 11 октября 2010

Существует два возможных сценария:

  • где-нибудь вы найдете описание для этого интерфейса событий (например, файл .h, описывающий интерфейс)
  • вы получите типбиблиотека - либо в отдельном файле .tlb, либо встроенная в качестве ресурса в файл DLL COM-сервера и используйте OleView для ее чтения или директиву #import в Visual C ++ для ее импорта и преобразования в определение интерфейса C ++ с именованными константамидля IID.

Вы также можете использовать IConnectionPointContainer::EnumConnectionPoints(), затем IConnectionPoint::GetConnectionInterface(), но просто получить IID не имеет смысла, если вы не знаете определения интерфейса, в первую очередь, для одноговсе это еще будет необходимо.

...