Erstellen eines Automatisierungsprojekts mit MFC und einer Typenbibliothek

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
178749 How to create an automation project using MFC and a type library

Zusammenfassung

Dieser Artikel beschreibt detailliert, wie Sie die Komponentenintegration mit COM-kompatiblen Anwendungen (wie zum Beispiel den Microsoft Office-Programmen) automatisieren können.

Weitere Informationen

Im folgenden Abschnitt wird das Erstellen eines MFC-Projekts erläutert. In diesem Beispiel wird Microsoft Excel automatisiert. Die ersten 8 Schritte sind auf jedes beliebige Projekt anwendbar, während Sie die Schritte 9 bis 15 entsprechend modifizieren müssen, wenn Sie mit einer anderen Anwendung arbeiten.

Automatisierungsprojekt erstellen

  1. Starten Sie mit Microsoft Developer Studio ein neues MFC-Anwendungs-Assistenten-Projekt (exe) mit dem Namen "AutoProject".
  2. Wählen Sie in Schritt 1 des MFC-Anwendungs-Assistenten den Anwendungstyp Dialog-basiert (Dialog Based) aus, und klicken Sie anschließend auf Fertig stellen.

    Dem jetzt eingeblendeten Dialogfeld Neue Projektinformationen können Sie entnehmen, dass u.a. die folgenden Klassen erstellt werden müssen:
          Application: CAutoProjectApp in AutoProject.h and AutoProject.cpp
    Dialog: CAutoProjectDlg in AutoProject.h and AutoProjectDlg.cpp
    Klicken Sie auf OK, um das Projekt erstellen zu lassen.
  3. Im Entwurfs-/Bearbeitungsbereich von Visual Studio wird das Dialogfeld "IDD_AUTOPROJECT_DIALOG" geöffnet. Modifizieren Sie dieses Dialogfeld den Anweisungen in den folgenden beiden Schritten entsprechend.
  4. Entfernen Sie das Beschriftungssteuerelement (IDC_STATIC) und die Abbrechen-Schaltfläche (IDCANCEL).
  5. Ändern Sie den Namen der Schaltfläche OK zu "IDRUN" und deren Beschriftung zu "Ausführen". Schließen Sie das Dialogfeld-Entwurfsformular "AutoProject.rc".
  6. Klicken Sie im Menü Ansicht auf Klassenassistent (oder drücken Sie die Tastenkombination [STRG]+[W]).
  7. Klicken Sie auf die Registerkarte Meldungszuordnungstabellen. Klicken Sie im Listenfeld Objekt-IDs auf IDRUN und danach im Listenfeld Nachrichten auf BN_CLICKED. Klicken Sie auf Funktion hinzufügen, und übernehmen Sie den vorgegebenen Namen "OnRun". Klicken Sie auf OK, um den Klassenassistenten zu schließen.

    Hinweis: Durch diesen Schritt wird der Headerdatei "AutoProjectDLG.h" eine Deklaration für das Funktionselement "OnRun();" hinzugefügt. Außerdem wird durch diesen Schritt der Datei "AutoProjectDLG.cpp" eine leere Meldungsbehandlungsfunktion mit dem Namen "CAutoProjectDlg::OnRun()" hinzugefügt.
  8. Klicken Sie im Menü Ansicht auf Klassenassistent (oder drücken Sie die Tastenkombination [STRG]+[W]).
  9. Klicken Sie auf die Registerkarte Automatisierung. Klicken Sie auf Klasse hinzufügen, und wählen Sie dann die Option Aus einer Typbibliothek. Wählen Sie die Objektbibliothek für die Anwendung aus, die Sie automatisieren möchten (in diesem Beispiel wählen Sie zwecks Automatisierung von Excel 97 die Microsoft Excel 8.0-Objektbibliothek aus; deren Standardspeicherort ist "C:\Programme\Microsoft Office\Office\Excel8.olb").

    Falls Sie Microsoft Excel 2000 automatisieren möchten, wählen Sie die Microsoft Excel 9.0-Objektbibliothek aus (Standardspeicherort "C:\Programme\Microsoft Office\Office\Excel9.olb").

    Falls Sie Microsoft Excel 2002 und Microsoft Office Excel 2003 automatisieren möchten, ist die Objektbibliothek in die Datei "Excel.exe" eingebettet. Der Standardpfad zu der Datei "Excel.exe" in Office 2002 ist "C:\Programme\Microsoft Office\Office10\Excel.exe". Der Standardpfad zu der Datei "Excel.exe" in Office 2003 ist "C:\Programme\Microsoft Office\Office11\Excel.exe". Nachdem Sie die richtige Objektbibliothek ausgewählt haben, klicken Sie auf Öffnen. Markieren Sie alle Klassen in der Liste Klassen bestätigen, und klicken Sie anschließend auf OK.

    Hinweis: Das Listenfeld im Dialogfeld Klassen bestätigen enthält alle IDispatch-Schnittstellen (die nahezu mit Klassen identisch sind) aus der Microsoft Excel-Typbibliothek. In der unteren Hälfte des Dialogfelds sehen Sie, dass eine Implementierungsdatei mit dem Namen "Excel8.cpp" generierte Klassenwrapper enthält, die aus "ColeDispatchDriver()" abgeleitet wurden; die entsprechende Deklarationsheaderdatei heißt "Excel8.h". (Für Excel 2002 und Excel 2003 lautet der Name dieser Datei "Excel.cpp" beziehungsweise "Excel.h".)
  10. Klicken Sie auf OK, um das Dialogfeld MFC-Klassenassistent zu schließen.
  11. Fügen Sie der Funktion "CAutoProjectApp::InitInstance()" den folgenden Code hinzu, durch den die COM-Dienstebibliothek aktiviert wird.
          BOOL CAutoProjectApp::InitInstance()
    {
    if(!AfxOleInit()) // Your addition starts here
    {
    AfxMessageBox("Could not initialize COM dll");
    return FALSE;
    } // End of your addition

    AfxEnableControlContainer();
    .
    .
    .

    }
  12. Fügen Sie den #Include-Anweisungen oben in der Programmdatei "AutoProject.cpp" die folgende Zeile hinzu:
          #include <afxdisp.h>
  13. Fügen Sie oben in der Programmdatei "AutoProjectDlg.cpp" die Include-Anweisung für "excel8.h" nach der Include-Anweisung für "stdafx.h" ein:
          #include "stdafx.h"
    #include "excel8.h" // excel.h in the case of Excel 2002 and Excel 2003.
  14. Fügen Sie der Funktion "CAutoProjectDlg::OnRun()" einen Automatisierungscode wie den folgenden hinzu:
          void CAutoProjectDlg::OnRun()
    {
    _Application app; // app is the Excel _Application object

    // Start Excel and get Application object...
    if(!app.CreateDispatch("Excel.Application"))
    {
    AfxMessageBox("Couldn't start Excel.");
    }
    else
    {
    //Make Excel Visible and display a message
    app.SetVisible(TRUE);
    AfxMessageBox ("Excel is Running!");
    }
    }
  15. Erstellen Sie das Projekt, und führen Sie es aus. Ergebnisse: Wenn Sie in dem Dialogfeld auf die Schaltfläche Ausführen klicken, wird Microsoft Excel gestartet. Aktivieren Sie das Dialogfeld Auto_Excel, und schließen Sie das Meldungsfeld. Microsoft Excel wird beendet, wenn die Ausführung der Funktion "CAutoProjectDlg::OnRun()" abgeschlossen ist, weil dann die Anwendungsvariable außerhalb des gültigen Bereichs liegt.

Zusätzliche Hinweise

Nachdem Sie Ihrem Projekt Klassen aus einer Typbibliothek hinzugefügt haben (wie Sie dies im vorstehenden Schritt 9 getan haben), werden Sie feststellen, dass dem Projekt eine große Anzahl an Klassen hinzugefügt worden ist. Sie können in der Klassenansicht auf eine Klasse doppelklicken, um die Memberfunktionen dieser Klasse anzuzeigen. Danach können Sie auf die Memberfunktion doppelklicken, um die Definition dieser Funktion in der Implementierungsdatei "Excel8.cpp" anzuzeigen.

Sie müssen sich die Definition einer Memberfunktion ansehen, wenn Sie einen Rückgabetyp überprüfen möchten oder wenn Sie die Implementierung einer Funktion ändern müssen. Wenn Sie die Definition einer Funktion ändern, müssen Sie auch die Deklaration in der Datei "Excel8.h" ändern. Stellen Sie dabei sicher, dass Sie die richtige Funktionsdeklaration ändern; in manchen Fällen haben Memberfunktionen in verschiedenen Klassen identische Namen (dies kann zum Beispiel bei der Funktion "GetApplication()" der Fall sein).

Mit der oben beschriebenen Vorgehensweise zur Automatisierung von Microsoft Excel lassen sich gleichermaßen auch andere Anwendungen automatisieren. In der folgenden Liste sind die Dateinamen für die Typbibliotheken von Microsoft Office-Anwendungen aufgeführt:

Anwendung Typbibliothek
--------------------------------------------------

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 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 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 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
Hinweis: Der Standardpfad für diese Typbibliotheken lautet "C:Programme\Microsoft Office\Office" (für Office 2002 lautet der Pfad "C:\...\Office10" bzw. "C:\...\Office11" für Office 2003), außer für Dao350.dll, Dao360.dll und Microsoft Office 10(MSO.dll). Der Standardspeicherort für die Dateien "Dao350.dll" und "Dao360.dll" ist "C:\Programme\Gemeinsame Dateien\Microsoft Shared\Dao". Der Standardspeicherort der Datei "MSO.dll" ist "C:\Programme\Gemeinsame Dateien\Microsoft Shared\Office10" für Office 2002 und "C:\Programme\Gemeinsame Dateien\Microsoft Shared\Office11" für Office 2003.

Informationsquellen

Dieser Artikel schildert eine spezifische Vorgehensweise zum Erstellen eines Dialogfeldprojekts. Allgemeinere Informationen zum Prozess des Erstellens eines VC++-Projekts in der Microsoft Developer Studio-Umgebung finden Sie in einem exzellenten Lernprogramm, auf das Sie mithilfe von Visual Studio InfoView zugreifen können. Klicken Sie im Menü ? auf Suchen, wenn Sie auf dieses Lernprogramm zugreifen möchten. Klicken Sie auf die Registerkarte Index, und geben Sie dann Folgendes ein:
Arbeiten mit Projekten
Klicken Sie auf Themenliste (List Topics). Wählen Sie das Thema "Homepage: Arbeiten mit Projekten" (Home Page: Working With Projects) aus, und klicken Sie danach auf Anzeigen.
Weitere Informationen zur Automatisierung von Office-Anwendungen finden Sie im folgenden Artikel der Microsoft Knowledge Base:

222101 Finden und Verwenden der Dokumentation zum Office-Objektmodell

Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Eigenschaften

Artikelnummer: 178749 – Letzte Überarbeitung: 21.01.2006 – Revision: 1

Feedback