Informationen zur primären Interop-Assembly für Microsoft Office InfoPath

Die Anwendung Microsoft Office InfoPath 2007 ist eine COM-Anwendung (Component Object Model), die Programmierschnittstellen für die externe Automatisierung und Skripts verfügbar macht, die in Formularvorlagen als COM-Schnittstellen verwendet werden. Zur Unterstützung für die Erstellung von InfoPath-Projektmappen, die Programmiersprachen für verwalteten Code wie Visual C# und Visual Basic verwenden, installiert die Option .NET-Programmierunterstützung im Office InfoPath 2007-Setupprogramm drei Interop-Assemblys. Interop-Assemblys sind .NET-Assemblys, die als Verbindung zwischen verwaltetem und nicht verwaltetem Code dienen, indem sie COM-Objektmember entsprechende verwaltete .NET-Member zuweisen.

Die Dateien für die von InfoPath installierten drei Interop-Assemblys lauten:

  • Microsoft.Office.Interop.InfoPath.dll

  • Microsoft.Office.Interop.InfoPath.SemiTrust.dll

  • Microsoft.Office.Interop.InfoPath.Xml.dll

In diesem Thema wird das Objektmodell erläutert, das über die Interop-Assembly "Microsoft.Office.Interop.InfoPath" verfügbar gemacht wird, die ausschließlich für externen Automatisierungscode verwendet wird. Informationen zur Microsoft.Office.Interop.InfoPath.SemiTrust-Assembly, die ausschließlich zum Schreiben und Ausführen von verwaltetem Code verwendet wird, der innerhalb von InfoPath-Formularvorlagen (XSN) ausgeführt wird, finden Sie unter InfoPath 2003-kompatible Objektmodelle.

Wichtige Informationen zur Installation

Standardmäßig wird die Microsoft.Office.Interop.InfoPath-Assembly bei der Installationsoption "Standard" des Office InfoPath 2007-Setupprogramms im globalen Assemblycache (Global Assembly Cache, GAC) installiert, dessen Inhalt über den Ordner "C:\Windows\Assembly" angezeigt werden kann. Diese Assembly wird als "primäre Interop-Assembly für Microsoft Office InfoPath" bezeichnet und wird normalerweise zusammen mit der Microsoft.Office.Interop.InfoPath.Xml-Assembly, die ebenfalls im GAC installiert wird, für die Automatisierung der InfoPath-Anwendung aus externen Anwendungen verwendet, die verwalteten Code verwenden. Informationen zur Microsoft.Office.Interop.InfoPath.Xml-Assembly finden Sie unter Informationen zur XML-Interop-Assembly für InfoPath.

Wenn die Microsoft.Office.Interop.InfoPath-Assembly im GAC nicht sichtbar ist, müssen Sie überprüfen, ob Office InfoPath 2007 richtig installiert wurde. So lange .NET Framework 1.1 Redistributable oder .NET Framework 1.1 Software Development Kit (SDK) vor dem Ausführen von Setup installiert wurde, wird die Option .NET-Programmierunterstützung des Setupprogramms bei einer Standardinstallation von InfoPath auf Von Arbeitsplatz ausführen festgelegt. Wenn diese Interop-Assemblys nicht auf dem Computer verfügbar sind, müssen Sie überprüfen, ob .NET Framework 1.1 installiert ist, sowie dann in der Systemsteuerung die Option Software ausführen und anschließend die Option .NET-Programmierunterstützung von Microsoft Office InfoPath auf Von Arbeitsplatz ausführen festlegen.

Weitere Informationen zum Download von .NET Framework 1.1 Redistributable finden Sie unter .NET Framework 1.1 Redistributable.

Microsoft.Office.Interop.InfoPath-Namespace

Das Schreiben von verwaltetem Code für eine bestimmte Aufgabe in einer InfoPath-Formularvorlage ist zwar dem Prozess sehr ähnlich, bei dem für dieselbe Programmieraufgabe Skript mit einer COM-Sprache wie Microsoft Visual Basic oder JScript geschrieben wird. Das Objektmodell, das beim Anzeigen des Microsoft.Office.Interop.InfoPath-Namespace über den Objektbrowser in Microsoft Visual Studio angezeigt wird, ist jedoch komplexer aufgebaut. Dies liegt daran, dass die Interoperabilität mit .NET Framework einen COM-Server benötigt, der alle öffentlichen Schnittstellen verfügbar macht. Weiterhin sind einige zusätzliche Konstrukte erforderlich, die .NET Framework benötigt. Weitere Informationen zum komplexeren Aufbau des von einer Interop-Assembly verfügbar gemachten Objektmodells finden Sie im Abschnitt "Verfügbarmachen von COM-Objekten für verwalteten Code" des Themas InfoPath 2003-kompatible Objektmodelle.

Verwenden von IntelliSense

Bei den Beispielen in diesem Abschnitt wird davon ausgegangen, dass Verweise auf die Assemblys "Microsoft.Office.Interop.InfoPath" und "Microsoft.Office.Interop.InfoPath.Xml" erstellt wurden. Informationen zur entsprechenden Vorgehensweise sowie weitere Beispiele für eine externe Automatisierung finden Sie unter Szenarios und Beispiele für externe Automatisierung.

Bevor Sie die Microsoft IntelliSense-Anweisungsvervollständigung in externem Automatisierungscode verwenden können, müssen Sie wie in der folgenden Codezeile gezeigt für eine Instanz der Application-Klasse eine Objektvariable erstellen.

Application myApp = 
    new Microsoft.Office.Interop.InfoPath.Application();
Dim myApp As Application = _
    New Microsoft.Office.Interop.InfoPath.Application()

Wenn Sie nach dem Erstellen der Objektvariablen den Variablennamen und dahinter einen Punkt eingeben, wird eine Dropdown-Liste angezeigt, in der die Member der Application-Klasse ausgewählt werden können.

Deklarieren Sie für die Arbeit mit einem InfoPath-Formular eine Objektvariable vom Typ XDocument, und initialisieren Sie sie wie in der folgenden Codezeile gezeigt, indem Sie das Formular aus der XDocuments-Auflistung der Application-Objektvariablen öffnen.

XDocument myXDoc = myApp.XDocuments.Open(
    "c:\\temp\\Form1.xml",
    (int) XdDocumentVersionMode.xdFailOnVersionOlder);
Dim myXDoc As XDocument = myApp.XDocuments.Open( _
    "c:\\temp\\Form1.xml", _
    XdDocumentVersionMode.xdFailOnVersionOlder)

Die Dropdown-Liste für die IntelliSense-Anweisungsvervollständigung mit Membern der XDocument-Klasse wird angezeigt, wenn Sie den Namen der Variablen und dahinter einen Punkt eingeben.

Um den Inhalt des zugrunde liegenden XML-Dokuments für das Formular mithilfe von Microsoft XML Core Services (MSXML) 5.0 für Microsoft Office zu bearbeiten, müssen Sie eine Variable vom Typ IXMLDOMDocument2 erstellen, und dann das XML-DOM (Document Object Model) des Formulars mit der DOM-Eigenschaft der XDocument-Klasse dieser Variablen zuweisen.

IXMLDOMDocument2 doc= myXDoc.DOM as IXMLDOMDocument2;
Dim doc As IXMLDOMDocument2 = myXDoc.DOM

Die Dropdown-Liste für die IntelliSense-Anweisungsvervollständigung mit Membern der IXMLDOMDocument2-Klasse wird angezeigt, wenn Sie den Namen der Variablen und dahinter einen Punkt eingeben, sodass Sie das XML-Dokument mit MSXML 5.0 bearbeiten können.

Verwenden der Referenzdokumentation der Klassenbibliothek

Die Organisation der Referenzdokumentation für die Klassenbibliothek des Microsoft.Office.Interop.InfoPath-Namespace spiegelt die Beziehungen zwischen Coklassen-Schnittstellen und den geerbten Schnittstellen wider, die sie implementieren. Die Themen sind grundsätzlich genau so organisiert wie die Referenz zum InfoPath-Objektmodell zum Schreiben von Skript, die Bestandteil der InfoPath-Entwicklerreferenz ist und in Office InfoPath 2007 enthalten ist. Mit Ausnahme der Themen für die Schnittstellen Application und XDocument sind alle Themen zur COM-Coklassen-Schnittstelle den entsprechenden Themen "Object" und "Collection" der InfoPath-Skriptreferenz zugeordnet. So entsprechen beispielsweise die Themen "UIObject-Schnittstelle" und "WindowsCollection-Schnittstelle" der Referenzdokumentation für den Microsoft.Office.Interop.InfoPath-Namespace demselben oder ähnlichen Inhalt der Themen "UI-Objekt" und "Windows-Auflistung" der Skriptreferenz für das InfoPath-Objektmodell.

Der Link zu den Membern der Coklassen-Schnittstelle nach der Beschreibung der Schnittstelle am Anfang des Themas verweist allerdings auf ein leeres Thema. Sie müssen zum Anzeigen der Liste mit Membern, die von der Coklassen-Schnittstelle implementiert werden, das Thema für die aktuellste Schnittstelle öffnen, die von der Coklasse geerbt wird, und dann die Tabelle ihrer Member öffnen. Sie finden einen Link zu der geerbten Schnittstelle am Anfang des Themas zur Coklassen-Schnittstelle im Abschnitt "Hinweise".

Wenn Sie im Visual Studio Code-Editor auf F1 drücken, ist das Verhalten ähnlich, abgesehen davon, dass der Member, für den Sie die Hilfe mithilfe von F1 aufrufen, direkt angezeigt wird, da Sie mit großer Wahrscheinlichkeit mit Membern einer Schnittstelle arbeiten werden. Dennoch kann die Tatsache, dass ein Member von einer versionsspezifischen Schnittstelle implementiert werden kann, zunächst verwirrend erscheinen. Wenn Sie beispielsweise myXDocument.UI.Alert eingeben, den Cursor auf Alert platzieren und F1 drücken, wird ein Thema mit Namen "UI2.Alert-Methode" angezeigt. Dies ist der Fall, da die Alert-Methode eine Implementierung eines Members der UI2-Schnittstelle ist.

Übergeben optionaler Parameter an InfoPath-Objektmodellmember

Wenn ein InfoPath-Objektmodellmember einen optionalen Parameter enthält und Sie keinen Wert für diesen Parameter angeben, müssen Sie das Feld Type.Missing für diesen Parameter übergeben. Wird das Feld Type.Missing nicht übergeben, wenn ein vorhandener Wert ausgelassen wird, führt dies zu einem Buildfehler. Dies trifft auf sowohl in C# als auch in Visual Basic .NET geschriebenen Code zu. So enthält die SelectNodes-Methode der ViewObject-Schnittstelle beispielsweise zwei optionale Parameter: varEndNode und varViewContext. Eine Codezeile, in der keine vorhandenen Werte für diese optionalen Parameter angegeben sind, muss wie in den folgenden Beispielen dargestellt aussehen.

myXDocument.View.SelectNodes(group1, Type.Missing, Type.Missing);
myXDocument.View.SelectNodes(group1, Type.Missing, Type.Missing)

Siehe auch

Konzepte

Szenarios und Beispiele für externe Automatisierung