Доступ к COM-интерфейсу приложения с помощью C ++ или C

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

  •  03-07-2019
  •  | 
  •  

Вопрос

В ответ на вопрос, как я могу (или найти дополнительную информацию для) автоматизировать определенный функциональность без вмешательства пользователя, с C++ (или C) с использованием:

  • ATL
  • Или код автоматизации непосредственно на C / C ++

С уважением

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

Решение

Если приложение предоставляет библиотеку типов (а приложения Microsoft Office предоставляют), то вы можете получить доступ к ней из Microsoft C ++, используя ключевое слово #import .Это создаст оболочки C ++ для COM-интерфейсов, предоставляемых приложением.

Библиотеки типов часто представляют собой файлы .TLB, но они регулярно внедряются как ресурсы Win32 в исполняемые файлы.

Чтобы узнать, предоставляет ли приложение свою функциональность таким образом, вам, вероятно, потребуется обратиться к документации для конкретного приложения, поскольку обнаружение (и понимание) библиотек типов довольно сложно.

Пакет SDK для Windows включает инструмент "OLE / COM Viewer", который может отображать информацию библиотеки типов для COM-объекта в реестре или из файла или ресурса .TLB.

Если вы хотите поиграть с приложением, VBScript (или JScript) предоставит вам быстрый способ поэкспериментировать.Они оба способны использовать интерфейсы OLE Automation.

Другие советы

Под автоматизацией вы подразумеваете возможность иметь скрипт, который запускает приложение, взаимодействует с ним и выполняет некоторые функции.Что-то вроде автоматизированного тестового сценария или что-то в этом роде.

Для этого самый простой способ (если приложение уже существует, например Word, Excel, Visual Studio и т.д.) - Написать скрипт на языке, поддерживающем DCOM (например, Ruby с его библиотекой WIN32OLE), и использовать его для вызова приложения.

Если вы разрабатываете приложение, то это становится сложнее, вы, вероятно, могли бы встроить существующий язык сценариев в свой исполняемый файл и предоставить способ взаимодействия с ним.Возможно, у вас есть опция командной строки для автоматического запуска скрипта в контексте вашего приложения.Или, если вы хотите проделать какую-то серьезную работу по разработке, вы могли бы попробовать добавить в DCOM (я этого не пробовал, поэтому не знаю, сколько потребуется работы).

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