Jak używać biblioteki typów dla usługi Office Automation z poziomu programu Visual C++.NET

Podsumowanie

W tym artykule opisano sposób tworzenia projektu platformy .NET w języku Visual C++, który działa jako klient usługi Automation dla aplikacji zgodnych ze standardem Component Object Model (COM). W przykładzie w tym artykule użyto klas Microsoft Foundation Classes (MFC) z otokami klas dla składnika pakietu Office.

Więcej informacji

Poniższe kroki pokazują, jak utworzyć prostego klienta usługi Automation. Procedura ta obejmuje trzy główne kroki:

  1. Utwórz klienta usługi Automation.
  2. Dodaj kod do automatyzacji programu Microsoft Excel.
  3. Uruchom klienta usługi Automation.

Pierwszy krok (Tworzenie klienta usługi Automation) umożliwia utworzenie nowego klienta usługi Automation niezależnie od używanego serwera usługi Automation. Drugi krok (dodawanie kodu do automatyzacji programu Microsoft Excel) jest specyficzny dla serwera usługi Automation.

Tworzenie klienta usługi Automation

  1. Uruchom program Microsoft Visual Studio .NET. W menu Plik kliknij pozycję Nowy, a następnie kliknij pozycję Projekt. Wybierz pozycję Aplikacja MFC z typów projektów Visual C++, a następnie nadaj projektowi nazwę Autoprojekt.

  2. Gdy pojawi się Kreator aplikacji MFC, kliknij pozycję Typ aplikacji, ustaw typ aplikacji na Dialog Based, a następnie kliknij przycisk Zakończ.

  3. Zmodyfikuj okno dialogowe IDD_AUTOPROJECT_DIALOG w następujący sposób:

    1. Usuń kontrolkę Etykieta (IDC_STATIC) i przycisk Anuluj (IDCANCEL).
    2. Zmień identyfikator obiektu OKbutton na "IDRUN", a podpis na "Uruchom".
  4. Utwórz otoki klas z biblioteki typów dla serwera usługi Automation w następujący sposób:

    1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Autoprojekt, a następnie kliknij pozycję Dodaj klasę.

    2. Kliknij pozycję Klasa MFC z pozycji Typelib, a następnie kliknij pozycję Otwórz.

    3. Kliknij pozycję Dodaj klasę z: Registry i znajdź bibliotekę typów zarejestrowanych dla serwera usługi Automation.

      W tym przykładzie wybierz pozycję "Biblioteka typów programu Microsoft Excel 10.0" dla programu Microsoft ExcelXP lub "Biblioteka typów programu Microsoft Excel 9.0" dla programu Microsoft Excel 2000.

    4. Wybierz potrzebne interfejsy z listy, a następnie kliknij symbol większe niż (>), aby dodać je do listy interfejsów, dla których MFC tworzy otoki. Kliknij przycisk Zakończ po dodaniu wszystkich interfejsów.

      W tym przykładzie potrzebny jest tylko interfejs _Application.

      Ważne Jeśli w wybranej bibliotece typów znajduje się wiele interfejsów, wybierz tylko te interfejsy, których będziesz używać, ponieważ MFC wygeneruje oddzielny plik nagłówka dla każdego wybranego interfejsu. Minimalizując wybór interfejsu, można uniknąć niepotrzebnych nakładów podczas generowania i kompilacji plików.

  5. Aby załadować i włączyć bibliotekę usług COM do funkcji CAutoProjectApp::InitInstance, dodaj następujący kod:

    if(!AfxOleInit())  // Your addition starts here.
    {
      AfxMessageBox("Cannot initialize COM dll");
      return FALSE;
      // End of your addition.
    }
    
    AfxEnableControlContainer();
    
    
  6. Dodaj dyrektywę include dla każdego pliku nagłówka, który jest generowany na podstawie interfejsów w bibliotece typów serwera usługi Automation. Dodaj dyrektywy po instrukcji include dla pliku Stdafx.h u góry pliku AutoProjectDlg.cpp.

    W tym przykładzie dodaj dołączanie pliku nagłówka CApplication.h, który jest generowany dla interfejsu _Application:

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

Dodawanie kodu do automatyzacji programu Microsoft Excel

W oknie dialogowym IDD_AUTOPROJECT_DIALOG kliknij prawym przyciskiem myszy pozycję Uruchom, a następnie kliknij pozycję Dodaj procedurę obsługi zdarzeń z listy rozwijanej. W Kreatorze obsługi zdarzeń wybierz typ komunikatu BN_CLICKED, a następnie kliknij przycisk Dodaj i Edytuj. Dodaj następujący kod, aby zautomatyzować program Excel w programie obsługi:

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);
   }
} 

Uruchamianie klienta usługi Automation

Naciśnij klawisz F5, aby skompilować i uruchomić klienta usługi Automation. Po wyświetleniu okna dialogowego kliknij pozycję Uruchom. Klient usługi Automation uruchamia program Excel i sprawia, że aplikacja jest widoczna. Zwróć uwagę, że program Excel pozostaje uruchomiony nawet po zakończeniu działania klienta usługi Automation, ponieważ użytkownik otrzymał kontrolę nad aplikacją.

Dodatkowe uwagi

Po dodaniu klas z biblioteki typów do projektu można zauważyć, że są one wyświetlane w widoku klasy projektu. W widoku klasy można dwukrotnie kliknąć klasę, aby wyświetlić metody tej klasy, a następnie kliknąć dwukrotnie metodę, aby wyświetlić definicję tej funkcji w pliku implementacji otoki MFC. Możesz przejrzeć definicję funkcji składowej, jeśli chcesz zweryfikować zwracany typ lub czy musisz zmienić implementację funkcji.

Mimo że wcześniejsze kroki ilustrują sposób automatyzowania programu Microsoft Excel, można zastosować te same pomysły, aby zautomatyzować inne aplikacje. Poniższa lista zawiera nazwy plików bibliotek typów innych aplikacji pakietu Microsoft Office:

| Aplikacja| Biblioteka typów| |---|---| | Microsoft Access 97| Msacc8.olb| | Microsoft Jet Database 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 r| Msacc9.olb| | Microsoft Jet Database 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 r.| 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| | Microsoft Office 2007|MSO.dll| | Microsoft Office Outlook 2007| MSOutl.olb| | Microsoft Office PowerPoint 2007| MSPpt.olb| | Microsoft Office Word 2007| MSWord.olb| Uwaga Domyślna lokalizacja bibliotek tego typu to:

| Wersja pakietu Office| Ścieżka| |---|---| | 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| Domyślną lokalizacją dla Dao350.dll i Dao360.dll jest C:\Program Files\Common Files\Microsoft Shared\Dao.