Использование библиотеки типов для службы автоматизации Office из Visual C++.NET

Аннотация

В этой статье описывается, как создать проект Visual C++ .NET, который выступает в качестве клиента автоматизации для приложений, совместимых с моделью COM. В примере в этой статье используются microsoft Foundation Classes (MFC) с оболочками классов для компонента Office.

Дополнительная информация

Ниже показано, как создать простой клиент службы автоматизации. Для этой процедуры необходимо выполнить три основных действия.

  1. Создайте клиент службы автоматизации.
  2. Добавьте код для автоматизации Microsoft Excel.
  3. Запустите клиент службы автоматизации.

Первый шаг (создание клиента службы автоматизации) можно использовать для создания клиента автоматизации независимо от используемого сервера автоматизации. Второй шаг (добавление кода для автоматизации Microsoft Excel) предназначен для сервера автоматизации.

Создание клиента службы автоматизации

  1. Запустите Microsoft Visual Studio .NET. В меню Файл выберите команду Создать, а затем выберите Проект. Выберите приложение MFC из типов проектов Visual C++ и назовите проект AutoProject.

  2. Когда появится мастер приложений MFC, щелкните "Тип приложения", задайте тип приложения "На основе диалогового окна" и нажмите кнопку "Готово".

  3. Измените IDD_AUTOPROJECT_DIALOG диалоговом окне следующим образом:

    1. Удалите элемент управления Label (IDC_STATIC) и кнопку "Отмена" (IDCANCEL).
    2. Измените идентификатор OKbutton на IDRUN, а заголовок — на "Выполнить".
  4. Создайте оболочки классов из библиотеки типов для сервера автоматизации следующим образом:

    1. В Обозреватель решений щелкните правой кнопкой мыши AutoProject и выберите команду "Добавить класс".

    2. Щелкните класс MFC из Typelib и нажмите кнопку "Открыть".

    3. Щелкните "Добавить класс из реестра" и найдите зарегистрированную библиотеку типов для сервера автоматизации.

      В этом примере выберите "Библиотека типов Microsoft Excel 10.0" для Microsoft ExcelXP или "Библиотека типов Microsoft Excel 9.0" для Microsoft Excel 2000.

    4. Выберите нужные интерфейсы из списка, а затем щелкните символ "больше" (>), чтобы добавить их в список интерфейсов, для которых MFC создает оболочки. После добавления всех интерфейсов нажмите кнопку "Готово".

      В этом примере требуется только _Application интерфейса.

      Важно Если в выбранной библиотеке типов много интерфейсов, выберите только те интерфейсы, которые будут использоваться, так как MFC создаст отдельный файл заголовка для каждого выбранного интерфейса. Минимизируя выбор интерфейса, можно избежать ненужных накладных расходов во время создания и компиляции файлов.

  5. Чтобы загрузить и включить библиотеку служб COM в функции CAutoProjectApp::InitInstance, добавьте следующий код:

    if(!AfxOleInit())  // Your addition starts here.
    {
      AfxMessageBox("Cannot initialize COM dll");
      return FALSE;
      // End of your addition.
    }
    
    AfxEnableControlContainer();
    
    
  6. Добавьте директиву include для каждого файла заголовка, созданного из интерфейсов в библиотеке типов сервера автоматизации. Добавьте директивы после инструкции include для Stdafx.h в верхней части autoProjectDlg.cpp.

    В этом примере добавьте включаемую строку для файла заголовка CApplication.h, который создается для _Application интерфейса:

          #include "stdafx.h"
          #include "CApplication.h"
    
    

Добавление кода для автоматизации Microsoft Excel

В диалоговом IDD_AUTOPROJECT_DIALOG щелкните правой кнопкой мыши "Выполнить", а затем в раскрывающемся списке выберите пункт "Добавить обработчик событий". В мастере обработчика событий выберите тип BN_CLICKED и нажмите кнопку "Добавить и изменить". Добавьте следующий код для автоматизации Excel в обработчике:

void CAutoProjectDlg::OnBnClickedRun()
{
   CApplication app;  // app is the Excel _Application object

// Start Excel and get Application object.

if(!app.CreateDispatch("Excel.Application"))
   {
      AfxMessageBox("Cannot start Excel and get Application object.");
      return;
   }
   else
   {
      //Make the application visible and give the user control of
      //Microsoft Excel.
      app.put_Visible(TRUE);
      app.put_UserControl(TRUE);
   }
} 

Запуск клиента службы автоматизации

Нажмите клавишу F5, чтобы выполнить сборку и запуск клиента службы автоматизации. Когда появится диалоговое окно, нажмите кнопку "Выполнить". Клиент службы автоматизации запускает Excel и делает приложение видимым. Обратите внимание, что Excel остается запущенным даже после окончания работы клиента службы автоматизации, так как пользователю предоставлен контроль над приложением.

Дополнительные замечания

После добавления классов из библиотеки типов в проект можно заметить, что они отображаются в представлении классов проекта. В представлении классов можно дважды щелкнуть класс, чтобы просмотреть методы этого класса, а затем дважды щелкнуть метод, чтобы просмотреть определение этой функции в файле реализации оболочки MFC. Определение функции-члена можно просмотреть, если требуется проверить тип возвращаемого значения или необходимо изменить реализацию функции.

Хотя в предыдущих шагах показано, как автоматизировать Microsoft Excel, вы можете применить те же идеи для автоматизации других приложений. Следующий список содержит имена файлов для библиотек типов других приложений Microsoft Office:

| Приложение| Библиотека типов| |---|---| | Microsoft Access 97| Msacc8.olb| | База данных Microsoft Jet 3.5|DAO350.dll| | Microsoft Binder 97| Msbdr8.olb| | Microsoft Excel 97| Excel8.olb| | Microsoft Graph 97| Graph8.olb| | Microsoft Office 97|Mso97.dll| | Microsoft Outlook 97| Msoutl97.olb| | Microsoft PowerPoint 97| Msppt8.olb| | Microsoft Word 97| Msword8.olb| ||| | Microsoft Access 2000| Msacc9.olb| | База данных Microsoft Jet 3.51|DAO360.dll| | Microsoft Binder 2000| Msbdr9.olb| | Microsoft Excel 2000| Excel9.olb| | Microsoft Graph 2000| Graph9.olb| | Microsoft Office 2000|Mso9.dll| | Microsoft Outlook 2000| Msoutl9.olb| | Microsoft PowerPoint 2000| Msppt9.olb| | Microsoft Word 2000| Msword9.olb | ||| | Microsoft Access 2002| Msacc.olb| | Microsoft Excel 2002|Excel.exe| | Microsoft Graph 2002|Graph.exe| | Microsoft Office 2002|MSO.dll| | Microsoft Outlook 2002| MSOutl.olb| | Microsoft PowerPoint 2002| MSPpt.olb| | Microsoft Word 2002| MSWord.olb| ||| | Microsoft Office Access 2003| Msacc.olb| | Microsoft Office Excel 2003|Excel.exe| | Microsoft Office Graph 2003|Graph.exe| | Microsoft Office 2003|MSO.dll| | Microsoft Office Outlook 2003| MSOutl.olb| | Microsoft Office PowerPoint 2003| MSPpt.olb| | Microsoft Office Word 2003| MSWord.olb| ||| | Microsoft Office Access 2007| Msacc.olb| | Microsoft Office Excel 2007|Excel.exe| | Microsoft Office Graph 2007|Graph.exe| | 2007 Microsoft Office|MSO.dll| | Microsoft Office Outlook 2007| MSOutl.olb| | Microsoft Office PowerPoint 2007| MSPpt.olb| | Microsoft Office Word 2007| MSWord.olb| Обратите внимание, что по умолчанию для этих библиотек типов используется следующее расположение:

| Версия Office| Путь| |---|---| | Office 97| C:\Program Files\Microsoft Office\Office| | Office 2000| C:\Program Files\Microsoft Office\Office| | Office XP| C:\Program Files\Microsoft Office\Office10| | Office 2003| C:\Program Files\Microsoft Office\Office11| |2007 Office| C:\Program Files\Microsoft Office\Office12| Расположение по умолчанию для Dao350.dll и Dao360.dll — C:\Program Files\Common Files\Microsoft Shared\Dao.