Vorgehensweise: Erstellen eines COM-Add-Ins zum Hinzufügen von benutzerdefinierten Features zu InfoPath
Microsoft Office InfoPath 2007 unterstützt COM-Add-Ins für die Erweiterung der Benutzerfunktionen für die Bearbeitung von Formularen. Diese neue Unterstützung von COM-Add-Ins in Office InfoPath 2007 wird in anderen Office-Anwendungen wie Microsoft Office Word und Microsoft Office Excel seit Office 2000 unterstützt.
Die Unterstützung von COM-Add-Ins in Office InfoPath 2007 steht in der Formularbearbeitungsumgebung zur Verfügung. Die Formularentwurfsumgebung kann nicht mithilfe von COM-Add-Ins erweitert werden.
Die IDTExtensibility2-Schnittstelle
Die InfoPath-Bearbeitungsumgebung unterstützt die IDTExtensibility2-Schnittstelle, die von den Entwicklern von COM-Add-Ins implementiert werden muss. IDTExtensibility2 ist ein Objekt mit zwei Schnittstellen, das fünf Methoden bereitstellt, die in der Bearbeitungsumgebung als Ereignisse fungieren. Diese Methoden ermöglichen es dem COM-Add-In, auf das Starten und Beenden der Umgebung zu reagieren (siehe Liste in der folgenden Tabelle).
Schnittstelle | Beschreibung |
---|---|
OnAddInsUpdate (ByVal custom() As Variant) |
Tritt auf, wenn ein Add-In in der Umgebung geladen oder entladen wird. |
OnBeginShutdown (ByVal custom() As Variant) |
Tritt auf, wenn die Umgebung beendet wird. |
OnConnection(ByVal Application As Object, ByVal ConnectMode As ext_ConnectMode, ByVal AddInInst As Object, ByVal custom() As Variant) |
Tritt auf, wenn ein Add-In in der Umgebung geladen wird. |
OnDisconnection (ByVal RemoveMode As ext_DisconnectMode, ByVal custom() As Variant) |
Tritt auf, wenn ein Add-In in der Umgebung entladen wird. |
OnStartupComplete (ByVal custom() As Variant) |
Tritt auf, wenn das Starten der Umgebung beendet wurde. |
Registrieren von COM-Add-Ins
Alle Office-Anwendungen, wie z. B. InfoPath, verwenden die Registrierung, um Add-Ins in der COM-Add-Ins-Auflistung aufzulisten, den Verbindungsstatus zu speichern und Informationen zum Starten bzw. Laden bei Bedarf zu speichern. Für InfoPath-COM-Add-Ins werden die Namen der einzelnen Add-Ins im folgenden Schlüssel aufgeführt:
HKEY_CURRENT_USER\Software\Microsoft\Office\InfoPath\AddIns\
Bei COM-Add-Ins, die für alle Benutzer des Clientcomputers installiert wurden, befindet sich der Registrierungsschlüssel in der Registrierungsstruktur "HKLM":
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\InfoPath\AddIns\
Der Name des Registrierungsschlüssels entspricht dem ProgIdAttribute des Add-Ins und enthält die folgenden Werte.
Name | Typ | Beschreibung |
---|---|---|
FriendlyName |
String |
Der Name, der im Dialogfeld COM-Add-Ins und im Vertrauensstellungscenter auf der Seite Add-Ins angezeigt wird. |
Description |
String |
Die Zeichenfolge, die angezeigt wird, wenn das Add-In im Vertrauensstellungscenter ausgewählt wird. |
LoadBehavior |
DWORD |
Gibt an, wie das COM-Add-In geladen wird. Der Wert kann eine Kombination von 0, 1, 2, 8 und 16 sein. Weitere Informationen enthält die folgende Tabelle. |
Der DWORD-Wert für LoadBehavior muss einen Wert enthalten, der beschreibt, wie das COM-Add-In in der Bearbeitungsumgebung geladen wird. Für den Wert ist ein Wert aus der folgenden Tabelle oder eine Kombination dieser Werte zulässig. Ein COM-Add-In, das in Visual Studio 2005 erstellt wurde, weist beispielsweise für LoadBehavior den Wert "3" auf, wird beim Anwendungsstart geladen und verbunden.
Wert | Beschreibung |
---|---|
0 |
Nicht verbunden. Das Add-In wird im Dialogfeld COM-Add-Ins als "Inaktiv" angezeigt. |
1 |
Verbunden. Das Add-In wird im Dialogfeld COM-Add-Ins als "Aktiv" angezeigt. |
2 |
Laden beim Start. Das Add-In wird beim Start der Hostanwendung geladen und verbunden. |
8 |
Laden bei Bedarf. Das Add-In wird geladen und verbunden, wenn es von der Hostanwendung benötigt wird, z. B., wenn ein Benutzer auf eine Schaltfläche klickt, die Funktionen im Add-In verwendet. |
16 |
Verbinden beim ersten Aufruf. Das Add-In wird geladen und verbunden, wenn der Benutzer die Hostanwendung nach dem Registrieren des Add-Ins zum ersten Mal ausführt. |
Erstellen eines verwalteten COM-Add-Ins mit Visual Studio 2005
Erstellen Sie zum Erstellen eines verwalteten COM-Add-In mit Microsoft Visual Studio 2005 wie folgt ein Visual Studio-Projekt für ein gemeinsames Add-In:
Klicken Sie auf Start, zeigen Sie auf Alle Programme, zeigen Sie auf Microsoft Visual Studio 2005, und klicken Sie dann auf Microsoft Visual Studio 2005.
Klicken Sie im Menü Datei auf Neues Projekt.
Klicken Sie im Fensterbereich Projekttypen des Dialogfelds Neues Projekt auf den Ordner Andere Projekttypen und dann auf Erweiterungen.
Klicken Sie im Fensterbereich Vorlagen auf Gemeinsames Add-In.
Geben Sie im Feld Name einen Namen für das Projekt für das gemeinsame Add-In ein.
Geben Sie im Feld Pfad einen Ordnerpfad ein, oder klicken Sie auf Durchsuchen, und wählen Sie einen Ordnerpfad aus. Klicken Sie anschließend auf OK. Der Assistent für gemeinsames Add-In wird geöffnet.
Klicken Sie im Assistent für gemeinsames Add-In auf Weiter. Die Seite Wählen Sie eine Programmiersprache wird angezeigt.
Klicken Sie auf Ein Add-In mit Visual Basic erstellen und dann auf Weiter. Die Seite Wählen Sie einen Anwendungshost wird angezeigt.
Deaktivieren Sie die Kästchen neben allen Anwendungen außer Microsoft InfoPath, und klicken Sie dann auf Weiter. Die Seite Geben Sie einen Namen und eine Beschreibung ein wird angezeigt.
Geben Sie im Feld Geben Sie einen Namen für das Add-In ein den Namen des COM-Add-Ins ein.
Geben Sie im Feld Geben Sie eine Beschreibung für das Add-In ein eine Beschreibung für das COM-Add-In ein, und klicken Sie auf Weiter. Die Seite Wählen Sie die Add-In-Optionen wird angezeigt.
Aktivieren Sie die Kästchen Das Add-In laden, wenn die Hostanwendung geladen wird und Das Add-In soll für alle Benutzer des Computers verfügbar sein, auf dem es installiert ist; nicht nur für den Benutzer, der das Add-In installiert.
Klicken Sie auf Weiter, um die Seite Zusammenfassung anzuzeigen, und dann auf Fertig stellen.
Nachdem das Projekt von Visual Studio erstellt wurde, werden im Fenster "Projektmappen-Explorer" zwei Projekte angezeigt. Das erste Projekt ist das Projekt für das COM-Add-In; das zweite Projekt ist ein Setupprojekt für die Bereitstellung des COM-Add-Ins. Der Assistent für gemeinsames Add-In fügt lediglich einen Verweis auf die Microsoft Office 12.0-Objektbibliothek hinzu. Daher müssen Sie die folgenden Schritte ausführen und einen Verweis auf die InfoPath-Objektbibliothek hinzufügen:
Doppelklicken Sie auf Eigenes Projekt, um die Eigenschaften des Add-In-Projekts anzuzeigen. Klicken Sie auf die Registerkarte Verweise, um die Verweise anzuzeigen, die automatisch zum Projekt hinzugefügt wurden.
Klicken Sie auf die Schaltfläche Hinzufügen, um das Dialogfeld Verweis hinzufügen anzuzeigen.
Doppelklicken Sie auf der Registerkarte COM auf Microsoft.InfoPath 2.0-Typbibliothek, und klicken Sie auf OK.
Beim Hinzufügen eines Verweises auf die Microsoft InfoPath 2.0-Typbibliothek werden auch Verweise auf drei Assemblys hinzugefügt, die entfernt werden müssen: ADODB, MSHTML und MSXML2. Klicken Sie in Projektmappen-Explorer unter Verweise mit der rechten Maustaste auf diese Verweise und dann auf Entfernen.
Anzeigen der Registrierungseinstellungen
Führen Sie die folgenden Schritte aus, um die Registrierungseinstellungen anzuzeigen, die beim Installieren des COM-Add-Ins erstellt werden:
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Stammknoten des Setupprojekts. Klicken Sie dann auf Ansicht, auf Editor und dann auf Registrierung.
Klicken Sie im linken Fensterbereich jeweils auf das Pluszeichen, um HKEY_LOCAL_MACHINE, Software, Microsoft, InfoPath und dann AddIns zu erweitern.
Klicken Sie auf den Namen, der der ProgID des Projekts für das gemeinsame Add-In entspricht.
Klicken Sie zum Ändern einer Eigenschaft mit der rechten Maustaste auf die betreffende Eigenschaft. Klicken Sie auf Eigenschaftenfenster, und ändern Sie das Feld Wert im Eigenschaftenfenster.
Kompilieren und Verteilen des gemeinsamen Add-Ins
Klicken Sie zum Kompilieren des verwalteten COM-Add-Ins im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt für das gemeinsame Add-In, um das Add-In auf dem Computer zu testen, auf dem das Projekt für das gemeinsame Add-In entwickelt wurde, und klicken Sie auf "Erstellen". Wenn das Projekt ohne Fehler erstellt wird, können Sie die InfoPath-Bearbeitungsumgebung starten und das verwaltete COM-Add-In verwenden. Wenn eine Instanz von InfoPath aufgeführt, müssen Sie sie vor dem Erstellen des Projekts schließen. Eventuell müssen Sie auch das Dialogfeld "COM-Add-Ins" öffnen und überprüfen, ob das COM-Add-In registriert wurde. Führen Sie die folgenden Schritte aus, um das Dialogfeld "COM-Add-Ins" zu öffnen:
Öffnen Sie die InfoPath-Bearbeitungsumgebung. Die einfachste Möglichkeit dazu besteht darin, eine vorhandene Formularvorlage zu öffnen, um basierend auf dieser Formularvorlage ein neues Formular zu erstellen.
Klicken Sie im Menü Extras auf Vertrauensstellungscenter.
Klicken Sie auf der linken Seite auf die Kategorie Add-Ins.
Klicken Sie in den Abschnitt Verwalten im unteren Bereich des Dialogfelds Vertrauensstellungscenter, wählen Sie COM-Add-Ins aus der Liste aus, und klicken Sie auf die Schaltfläche Gehe zu.
Im Dialogfeld COM-Add-Ins wird der Name des zuletzt erstellten Add-Ins angezeigt. Daneben sollte ein Kontrollkästchen vorhanden sein. Wenn daneben kein Kontrollkästchen vorhanden ist, wurde das COM-Add-In aufgrund eines Fehlers nicht geladen, der im Abschnitt Ladeverhalten des Dialogfelds angezeigt wird.
Zum Kompilieren des verwalteten COM-Add-Ins, damit es auf einem anderen Computer als dem Computer verwendet werden kann, auf dem das Projekt für das gemeinsame Add-In entwickelt wurde, müssen Sie zusätzliche Schritte ausführen, um den Code sicher zu machen. Informationen zum Sichern von Projekten für gemeinsame Add-Ins für die Verwendung auf anderen Computern finden Sie in den folgenden drei Artikeln:
Bereitstellung von verwalteten COM-Add-Ins in Office XP
Bereitstellen von verwalteten COM-Add-Ins in Office XP mit der Projektmappe für COM-Add-In-Shims
Isolieren von Office-Erweiterungen mit dem COM-Shim-Assistenten
Wichtig: |
---|
Wenn das COM-Add-In nicht isoliert wird, kann dies zu Speicherverlusten und zur Instabilität der Anwendung führen. |
Hinweis: |
---|
Wenn das .NET Framework oder andere erforderliche Assemblys des Setupprojekts nicht bereits auf den Zielcomputern installiert sind, wird die MSI-Datei u. U. nicht einwandfrei installiert. Außerdem ist es nicht möglich, die MSI-Datei zu verteilen und dann zu versuchen, die MSI-Datei zu installieren. Sie müssen auch die anderen Unterstützungsdateien in denselben Ordner verteilen wie die MSI-Originaldatei, die von Visual Studio generiert wurde. |
Codierung im COM-Add-In
Anwendungsereignisse, die in der InfoPath-Formularbearbeitungsumgebung auftreten, können von einem COM-Add-In erfasst werden. Die folgenden Ereignisse im ApplicationEvents-Objekt können vom COM-Add-In verwendet werden, um auf Benutzeraktionen zu reagieren:
Ereignis | Beschreibung |
---|---|
NewXDocument-Ereignis |
Tritt beim Erstellen eines neuen Formulars auf. |
Quit-Ereignis |
Tritt beim Beenden von InfoPath durch den Benutzer auf. |
WindowActivate-Ereignis |
Tritt beim Aktivieren eines Dokumentfensters auf. |
WindowDeactivate-Ereignis |
Tritt beim Deaktivieren eines Dokumentfensters auf. |
WindowSize-Ereignis |
Tritt beim Ändern der Größe oder beim Verschieben eines Dokumentfensters auf. |
XDocumentBeforeClose-Ereignis |
Tritt unmittelbar vor dem Schließen eines geöffneten Dokuments auf. |
XDocumentBeforePrint-Ereignis |
Tritt unmittelbar vor dem Drucken eines geöffneten Dokuments auf. |
XDocumentBeforeSave-Ereignis |
Tritt unmittelbar vor dem Speichern eines geöffneten Dokuments auf. |
XDocumentChange-Ereignis |
Tritt beim Erstellen eines neuen Formulars, beim Öffnen eines vorhandenen Formulars oder beim Festlegen eines anderen Formulars als aktives Formular auf. |
XDocumentOpen-Ereignis |
Tritt beim Öffnen eines Dokuments auf. |
Um diese Ereignisse im COM-Add-In zu erfassen, müssen Sie in der Connect-Klasse die folgenden Variablen auf Klassenebene deklarieren:
InfoPathApplication = DirectCast( _
application, Microsoft.Office.Interop.InfoPath._Application3)
InfoPathApplicationEvents = DirectCast( _
InfoPathApplication.Events, _
Microsoft.Office.Interop.InfoPath.ApplicationEvents)
Die erste Zeile wandelt den Typ des generischen Object der Anwendung, das vom Add-In empfangen wird, in das _Application3-Objekt um. Die zweite Zeile wandelt den Typ der Events-Eigenschaft des _Application3-Objekts (dargestellt durch die InfoPathApplication-Variable) in das ApplicationEvents-Objekt um.
Wählen Sie zum Erstellen von Ereignishandlern InfoPathApplicationEvents im Dropdown-Feld Klassenname oben im Visual Studio-Fenster und dann im Dropdown-Feld Methodenname unten im Visual Studio-Fenster das Ereignis aus, das verarbeitet werden soll. Wenn Sie beispielsweise steuern müssen, wann ein Formular gespeichert wird, verarbeiten Sie das XDocumentBeforeSave-Ereignis. Bei Auswahl von XDocumentBeforeSave im Dropdown-Feld Methodenname wird automatisch die folgende Prozedur eingefügt:
Private Sub InfoPathApplicationEvents_XDocumentBeforeSave( _
ByVal pDocument As Microsoft.Office.Interop.InfoPath._XDocument, _
ByRef pfCancel As Boolean) _
Handles InfoPathApplicationEvents.XDocumentBeforeSave
End Sub
Alle Ereignisse des ApplicationEvents-Objekts können mit derselben Methode vom COM-Add-In verarbeitet werden.
Siehe auch
Sonstige Ressourcen
Erstellen eines Microsoft Office 2000 COM-Add-Ins
Erstellen eines von Office verwalteten COM-Add-Ins mit Visual Studio .NET
Arbeiten mit den IDTExtensibility2-Ereignisprozeduren
Gewusst wie: Erstellen eines Office COM-Add-Ins mit Visual Basic .NET
Gewusst wie: Erstellen eines Office COM-Add-Ins mit Visual C# .NET