Überblick über das InfoPath Designer API für die Integration von InfoPath 2007 in Visual Studio 2005

Veröffentlicht: 20. Nov 2006

Von Mark Roberts und Gary Hsu

Sie erfahren, wie die Entwurfsumgebung Microsoft Office InfoPath 2007 für Formularvorlagen in die Visual Studio 2005 IDE integriert wird, wenn Microsoft Visual Studio 2005 Tools für das Microsoft Office System 2007 installiert ist. Dieser Artikel beschreibt außerdem das Objekt VsInfoPathDesigner sowie die neun Funktionen, die InfoPath bereitstellt, um projektspezifische Aufgaben zu erledigen, wenn die Entwurfsumgebung InfoPath als benutzerdefinierter Editor in Visual Studio eingebettet ist. (9 gedruckte Seiten)

Auf dieser Seite

Überblick über die Integration von InfoPath 2007 in Visual Studio Überblick über die Integration von InfoPath 2007 in Visual Studio
InfoPath Designer API für die Integration von InfoPath 2007 in Visual Studio InfoPath Designer API für die Integration von InfoPath 2007 in Visual Studio
Schlussbemerkung Schlussbemerkung
Weitere Ressourcen Weitere Ressourcen

Überblick über die Integration von InfoPath 2007 in Visual Studio

Wenn Sie Microsoft Visual Studio 2005 Tools für das Microsoft Office System 2007 verwenden, wird die Entwicklungsumgebung Microsoft Office InfoPath 2007 für Formularvorlagen in die Entwicklungsumgebung Microsoft Visual Studio 2005 integriert. In dieser integrierten Umgebung können Sie die Funktionen von Office InfoPath 2007 nutzen, um das Layout von InfoPath-Formularvorlagen zu entwerfen und verwalteten Code für die Geschäftslogik zu schreiben, ohne Visual Studio zu verlassen. Wenn Sie in Visual Studio mit InfoPath-Formularvorlagen arbeiten, schreibt ein Entwickler die Geschäftslogik in C# oder Microsoft Visual Basic für entweder das neue Office InfoPath 2007 Objektmodell für verwalteten Code (Typen und Elemente des Namespace Microsoft.Office.InfoPath) oder für das zu Microsoft Office InfoPath 2003 kompatible Objektmodell (Typen und Elemente des Namespace Microsoft.Office.Interop.InfoPath.SemiTrust).

Nach der Installation der Microsoft Visual Studio 2005 Tools für das Microsoft Office System 2007 können Sie einen benutzerdefinierten Visual Studio-Projekttyp (eine InfoPath-Formularvorlage für C# oder Visual Basic) erstellen und dann die Entwurfsumgebung InfoPath 2007 für Formularvorlagen verwenden, die als benutzerdefinierter Visual Studio-Editor eingebunden ist, um Aufgaben beim Entwurf von Formularvorlagen zu erledigen und Ereignis-Handler sowie anderen Code für die Geschäftslogik hinzuzufügen.

Die Entwurfsumgebung InfoPath 2007 für Formularvorlagen wird in die Visual Studio IDE (Integrated Development Environment) integriert, indem ein VSPackage installiert und registriert wird, das unter Verwendung des im Abschnitt Integration in Visual Studio beschriebenen Prozesses des Visual Studio SDK erzeugt wurde. VSPackages sind Software-Module, die die Visual Studio IDE bilden und erweitern, indem sie Elemente für die Benutzeroberfläche, Dienste, Projekte, Editoren und Designer bereitstellen. Das InfoPath Designer VSPackage agiert als Wrapper für die Integration von Elementen der Benutzeroberfläche und Funktionen der Entwicklungsumgebung InfoPath in Visual Studio. Die korrekte Funktionsweise des VSPackage ist von einer lokalen Installation von InfoPath 2007 abhängig.

Das InfoPath Designer VSPackage ist im folgenden Registrierungsschlüssel als Visual Studio 2005 Editor-Package registriert:

        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Editors\{6ab7a76b-2809-4a7c-bff6-2a3b99feef91}
      

Das von einem InfoPath Formularvorlagen-Projekt erzeugte Projekt ist ein VSTA-Projekt (Visual Studio Tools for Applications) und beinhaltet Abhängigkeiten von VSTA-Komponenten, die zusammen mit InfoPath 2007 installiert werden.

Um möglichst viele aktuelle Informationen über die Integration von Visual Studio zu erhalten, einschließlich von Beispiellösungen und Tools, laden Sie den Visual Studio SDK herunter. Dazu registrieren Sie sich als Visual Studio Industry Partner (VSIP) Affiliate-Mitglied unter https://www.vsipmembers.com bzw. melden sich an und laden dann den Visual Studio SDK unter http://affiliate.vsipmembers.com/affiliate/downloadFiles.aspx herunter. Weitere Informationen sowie Support für die Integraton von Visual Studio finden Sie im Visual Studio Extensibility Forum zu MSDN sowie in der Newsgroup microsoft.public.vstudio.extensibility.

Informationen zu VSTA werden irgendwann in den Visual Studio SDK aufgenommen, aber zum Zeitpunkt der Veröffentlichung dieses Artikels steht diese Information im SDK nicht zur Verfügung. Aktuelle Informationen über VSTA finden Sie im Abschnitt Weitere Ressourcen am Ende des Artikels.

 

InfoPath Designer API für die Integration von InfoPath 2007 in Visual Studio

Das InfoPath Designer-Objekt VsInfoPathDesigner ist in der IPDESIGN.dll implementiert, die bei der Installation von InfoPath 2007 im Verzeichnis laufwerk:\Programme\Microsoft Office\OFFICE12 installiert wird. Das Objekt VsInfoPathDesigner implementiert die erforderlichen Schnittstellen für die Integration der Entwurfsumgebung InfoPath in Visual Studio. Die Komponente IPDESIGN.dll unterstützt außerdem neun Funktionen, die für die Ausführung von Aufgaben für das InfoPath-Projekt verwendet werden, wenn die Entwurfsumgebung InfoPath als benutzerdefinierter Editor in Visual Studio 2005 eingebunden ist. Das Objekt VsInfoPathDesigner implementiert die Schnittstelle IVsWindowFrame, um Dokument- und Toolfenster für InfoPath in Visual Studio einzubinden. Beispiele für die Integration eines benutzerdefinierten Editors in Visual Studio finden Sie unter Grundlegendes Bearbeitungsbeispiel und Abbildungen zum Bearbeitungsbeispiel im Visual Studio SDK.

Die Klassen-ID (CLSID) für das VsInfoPathDesigner-Objekt ist {6ab7a76b-2809-4a7c-bff6-2a3b99feef91}.

Der folgende Code zeigt die Deklaration der CLSID des VsInfoPathDesigner-Objekts.

C++

        extern "C" const __declspec(selectany) CLSID CLSID_VsInfoPathDesigner =
        { 0x6AB7A76B, 0x2809, 0x4A7C,
        { 0xBF, 0xF6, 0x2A, 0x3B, 0x99, 0xFE, 0xEF, 0x91 } };
      

Die IPDESIGN.dll exportiert die folgenden neun Funktionen:

  • RunVsTemplateWizard

  • RunPostVsProjectCreationTasks

  • ConvertInfoPathProjectForVSTO

  • GetAssociatedVsDocument

  • CreateVsWorkpane

  • CanShowVsWorkpane

  • ExecVsExportTemplate

  • RunStartupTasksForVSTO

  • ResetToolboxItems

Die folgenden Abschnitte beschreiben diese Funktionen.

RunVsTemplateWizard

RunVsTemplateWizard ruft das Dialogfeld Design a Form Template (Eine Formularvorlage entwerfen) auf.

C++

          STDAPI RunVsTemplateWizard(
          IN    BSTR                    bstrManifestPath,
          IN    BSTR                    bstrProjectName,
          IN    BSTR                    bstrProjectPath,
          IN    BSTR                    bstrLanguage,
          OUT   InfoPathDesignMode*     peDesignMode,
          OUT   BOOL*                   pfO12OM,
          OUT   BOOL*                   pfAllowClientOnlyCode);
        

Tabelle 1 beschreibt die Parameter der Funktion RunVsTemplateWizard.

Tabelle 1. Parameter der Funktion RunVsTemplateWizard

Parameter

Definition

bstrManifestPath

Gibt an, wo die Lösung gespeichert wird.

bstrProjectName

Gibt den Namen für das Projekt an, das für den Titel der Lösung verwendet wird.

bstrProjectPath

Gibt den Pfad zu der Projektdatei an (entspricht dem Attribut managedCode/@projectPath in der Datei manifest.xsf der Formularvorlage).

bstrLanguage

Gibt die Programmiersprache für das Formularvorlagenprojekt an. Kann CSharp oder VisualBasic sein (entspricht dem Attribut managedCode/@language in der Datei manifest.xsf der Formularvorlage).

peDesignMode

Gibt einen Wert zurück, der den Entwurfsmodus des Projekts anzeigt. Dies entspricht der Einstellung des Kontrollkästchens Enable browser-compatible features only (Nur browserkompatible Funktionen aktivieren) im Dialogfeld Design a Form Template (Eine Formularvorlage entwerfen). Gibt 1 zurück, wenn das Kontrollkästchen nicht markiert ist, und 2, wenn das Kontrollkästchen markiert ist.

peDesignMode

Gibt einen Wert zurück, der den Entwurfsmodus des Projekts anzeigt. Dies entspricht der Einstellung des Kontrollkästchens Enable browser-compatible features only (Nur browserkompatible Funktionen aktivieren) im Dialogfeld Design a Form Template (Eine Formularvorlage entwerfen). Gibt 1 zurück, wenn das Kontrollkästchen nicht markiert ist, und 2, wenn das Kontrollkästchen markiert ist.

pfO12OM

Gibt einen Wert zurück, der anzeigt, auf welches InfoPath-Objektmodell für verwalteten Code verwiesen wird. Gibt TRUE zurück, wenn ein Verweis auf die Assembly Microsoft.Office.InfoPath vorhanden ist, und FALSE, wenn ein Verweis auf die Assembly Microsoft.Office.Interop.InfoPath.SemiTrust vorhanden ist.

pfAllowClientOnlyCode

Gibt einen Wert zurück, der anzeigt, ob das Kontrollkästchen Hide errors for code that uses InfoPath-only features (Fehler für Code verbergen, der nur Funktionen aus InfoPath verwendet) in der Kategorie Compatibility (Kompatibilität) des Dialogfelds Form Options (Formularoptionen) markiert ist. Gibt TRUE zurück, wenn das Kontrollkästchen markiert ist, und FALSE, wenn das Kontrollkästchen nicht markiert ist.

Wenn der Benutzer eine Formularvorlage im Dialogfeld Design a Form Template (Eine Formularvorlage entwerfen) erzeugt oder lädt, speichert der Designer immer eine neue Kopie der vom Benutzer ausgewählten Lösung.

RunPostVsProjectCreationTasks

RunPostVsProjectCreationTasks führt Aufgaben aus, nachdem das Projekt erzeugt wurde, wie beispielsweise die Überprüfung des Assembly-Namens, die Initialisierung von Codedateien, die Aktualisierung von Verweisen oder die Erstellung des Signaturschlüssels.

C++

          STDAPI RunPostVsProjectCreationTasks(
          IN    IDispatch*              pdispProject,
          IN    BOOL                    fO12OM,
          IN    BOOL                    fCSharp,
          IN    InfoPathDesignMode      eDesignMode,
          IN    BOOL                    fEnableClientOnlyCode);
        

Tabelle 2 beschreibt die Parameter der Funktion RunPostVsProjectCreationTasks.

Tabelle 2. Parameter der Funktion RunPostVsProjectCreationTasks

Parameter

Definition

pdispProject

Gibt den Zeiger IDispatch auf das Projektobjekt an.

fO12OM

Gibt an, auf welches InfoPath-Objektmodell für verwalteten Code verwiesen werden soll:

  • Assembly Microsoft.Office.InfoPath
  • Assembly Microsoft.Office.Interop.InfoPath.SemiTrust

Geben Sie TRUE an, um auf das in der Assembly Microsoft.Office.InfoPath bereitgestellte Objektmodell zu verweisen, und FALSE, um auf das in der Assembly Microsoft.Office.Interop.InfoPath.SemiTrust bereitgestellte Objektmodell zu verweisen.

fCSharp

Gibt an, welche Programmiersprache für das Projekt verwendet werden soll. Geben Sie TRUE an, um C# zu verwenden, und FALSE, um Visual Basic zu verwenden.

eDesignMode

Gibt den Entwurfsmodus für das Projekt an. Dies entspricht der Einstellung des Kontrollkästchens Enable browser-compatible features only (Nur browserkompatible Funktionen aktivieren) im Dialogfeld Design a Form Template (Eine Formularvorlage entwerfen). Geben Sie 1 an, wenn das Kontrollkästchen nicht markiert ist, und 2 , wenn das Kontrollkästchen markiert ist.

fEnableClientOnlyCode

Gibt an, ob reiner Client-Code aktiviert werden soll. Dies entspricht der Situation, ob das Kontrollkästchen Hide errors for code that uses InfoPath-only features (Fehler für Code verbergen, der nur Funktionen aus InfoPath verwendet) in der Kategorie Compatibility (Kompatibilität) des Dialogfelds Form Options (Formularoptionen) markiert ist. Geben Sie TRUE an, wenn das Kontrollkästchen markiert ist, und FALSE, wenn das Kontrollkästchen nicht markiert ist.

ConvertInfoPathProjectForVSTO

ConvertInfoPathProjectForVSTO wandelt eine InfoPath-Formularvorlage für verwalteten Code, die mit einem der InfoPath 2003 Toolkits erstellt wurde, in ein Projekt mit Microsoft Visual Studio 2005 Tools für das Microsoft Office System 2007 (VSTO) um.

C++

          STDAPI ConvertInfoPathProjectForVSTO(
          IN    BSTR                    bstrProjectLocation,
          IN    IServiceProvider*       pServiceProvider,
          OUT   BSTR*                   pbstrNewProjectLocation,
          OUT   GUID*                   pguidNewProjectFactory,
          OUT   BOOL*                   pfWhidbeySolution);
        

Tabelle 3 beschreibt die Parameter der Funktion ConvertInfoPathProjectForVSTO.

Tabelle 3. Parameter der Funktion ConvertInfoPathProjectForVSTO

Parameter

Definition

bstrProjectLocation

Gibt die Position des Projekts an.

pServiceProvider

Gibt den Zeiger IServiceProvider auf den Service-Provider von Visual Studio an.

pbstrNewProjectLocation

Gibt die neue Projektposition zurück.

pguidNewProjectFactory

Gibt die GUID der neuen Projekt-Factory zurück (entweder die GUID des C#-Projekts oder die GUID des Visual Basic-Projekts).

pfWhidbeySolution

Gibt zurück, ob das ursprüngliche Projekt mit dem InfoPath 2003 Toolkit für Visual Studio .NET 2003 oder mit den Microsoft Visual Studio 2005 Tools für das Microsoft Office System erstellt wurde. Gibt TRUE zurück, wenn das ursprüngliche Projekt ein Projekt unter Microsoft Visual Studio 2005 Tools für das Microsoft Office System war, und FALSE, wenn das ursprüngliche Projekt ein Projekt unter InfoPath 2003 Toolkit für Visual Studio .NET 2003 war.

GetAssociatedVsDocument

GetAssociatedVsDocument ermittelt das aktuell aktive Dokument, das dem InfoPath-Designer zugeordnet ist.

C++

          STDAPI GetAssociatedVsDocument(
          OUT   IUnknown**              ppunkAssociatedVsDocument);
        

Tabelle 4 beschreibt die Parameter der Funktion GetAssociatedVsDocument.

Tabelle 4. Parameter der Funktion GetAssociatedVsDocument

Parameter

Definition

ppunkAssociatedVsDocument

Gibt den Zeiger IUnknown auf das Dokument zurück.

CreateVsWorkpane

CreateVsWorkpane erzeugt ein Toolfenster für den InfoPath-Aufgabenbereich.

C++

          STDAPI CreateVsWorkpane(
          IN    IUnknown*        punkSite,
          IN    REFGUID          rguidPersistenceGuid
          OUT   IVsWindowFrame** ppWindowFrame);
        

Tabelle 5 beschreibt die Parameter der Funktion CreateVsWorkpane.

Tabelle 5. Parameter der Funktion CreateVsWorkpane

Parameter

Definition

punkSite

Gibt den Zeiger IUnknown auf den Service-Provider von Visual Studio an.

rguidPersistenceGuid

Gibt die GUID des zu erzeugenden InfoPath-Aufgabenbereichs an.

ppWindowFrame

Gibt einen IVsWindowFrame-Zeiger auf das Visual Studio-Toolfenster zurück, das den angegebenen Aufgabenbereich enthält.

Verwenden Sie die in Tabelle 6 gezeigten GUID-Werte, um den Wert für den Parameter rguidPersistenceGuid anzugeben.

Tabelle 6. GUID-Werte für den Parameter rguidPersistenceGuid

Aufgabenbereich

GUID

Asiatische Typografie

{00000716-2809-4A7C-BFF6-2A3B99FEEF91}

Aufzählungszeichen und Nummerierung

{00000725-2809-4A7C-BFF6-2A3B99FEEF91}

Farbschemata

{000005E5-2809-4A7C-BFF6-2A3B99FEEF91}

Datenquelle

{00000724-2809-4A7C-BFF6-2A3B99FEEF91}

Designdetektiv

{00000855-2809-4A7C-BFF6-2A3B99FEEF91}

Design-Aufgaben

{000007BD-2809-4A7C-BFF6-2A3B99FEEF91}

Schriftart

{000007B8-2809-4A7C-BFF6-2A3B99FEEF91}

Raster

{00000717-2809-4A7C-BFF6-2A3B99FEEF91}

Layout

{00000768-2809-4A7C-BFF6-2A3B99FEEF91}

Absatz

{000005AA-2809-4A7C-BFF6-2A3B99FEEF91}

Rechtschreibung

{000006DA-2809-4A7C-BFF6-2A3B99FEEF91}

Ansichten

{000006DC-2809-4A7C-BFF6-2A3B99FEEF91}

Hinweis:
Die Aufgabenbereiche Asiatische Typografie und Raster stehen nur in asiatischen Sprachversionen von InfoPath 2007 zur Verfügung.

CanShowVsWorkpane

CanShowVsWorkpane bestimmt, ob der angegebene InfoPath-Aufgabenbereich angezeigt werden kann.

C++

          STDAPI CanShowVsWorkpane(
          IN    IUnknown*               punkSite,
          IN    REFGUID                 rguidPersistenceGuid,
          OUT   BOOL*                   pfCanShow);
        

Tabelle 7 beschreibt die Parameter der Funktion CanShowVsWorkpane.

Tabelle 7. Parameter der Funktion CanShowVsWorkpane

Parameter

Definition

punkSite

Gibt den Zeiger IUnknown auf den Service-Provider von Visual Studio an.

rguidPersistenceGuid

Gibt die dem InfoPath-Aufgabenbereich zugeordnete GUID an.

pfCanShow

Gibt TRUE zurück, wenn der Aufgabenbereich angezeigt werden kann, andernfalls FALSE.

Verwenden Sie die in Tabelle 8 gezeigten GUID-Werte, um den Wert für den Parameter rguidPersistenceGuid anzugeben.

Tabelle 8. GUID-Werte für den Parameter rguidPersistenceGuid

Aufgabenbereich

GUID

Asiatische Typografie

{00000716-2809-4A7C-BFF6-2A3B99FEEF91}

Aufzählungszeichen und Nummerierung

{00000725-2809-4A7C-BFF6-2A3B99FEEF91}

Farbschemata

{000005E5-2809-4A7C-BFF6-2A3B99FEEF91}

Datenquelle

{00000724-2809-4A7C-BFF6-2A3B99FEEF91}

Designdetektiv

{00000855-2809-4A7C-BFF6-2A3B99FEEF91}

Design-Aufgaben

{000007BD-2809-4A7C-BFF6-2A3B99FEEF91}

Schriftart

{000007B8-2809-4A7C-BFF6-2A3B99FEEF91}

Raster

{00000717-2809-4A7C-BFF6-2A3B99FEEF91}

Layout

{00000768-2809-4A7C-BFF6-2A3B99FEEF91}

Absatz

{000005AA-2809-4A7C-BFF6-2A3B99FEEF91}

Rechtschreibung

{000006DA-2809-4A7C-BFF6-2A3B99FEEF91}

Ansichten

{000006DC-2809-4A7C-BFF6-2A3B99FEEF91}

Hinweis:
Die Aufgabenbereiche Asiatische Typografie und Raster stehen nur in asiatischen Sprachversionen von InfoPath 2007 zur Verfügung.

ExecVsExportTemplate

ExecVsExportTemplate zeigt eine Warnung an, wenn derzeit ein InfoPath-Designer aktiv ist. Gibt S_OK zurück, wenn die Warnung angezeigt wurde, andernfalls OLECMDERR_E_UNKNOWNGROUP.

C++

          STDAPI ExecVsExportTemplate(
          IN    IUnknown*               punkSite);
        

Tabelle 9 beschreibt die Parameter der Funktion ExecVsExportTemplate.

Tabelle 9. Parameter der Funktion ExecVsExportTemplate

Parameter

Definition

punkSite

Gibt den Zeiger IUnknown auf den Service-Provider von Visual Studio an.

RunStartupTasksForVSTO

RunStartupTasksForVSTO führt die VSTA-spezifischen Aufgaben beim Starten aus, nachdem das Projekt geladen wurde.

C++

          STDAPI RunStartupTasksForVSTO(
          IN    IDispatch*              pdispHostAdapter);
        

Tabelle 10 beschreibt die Parameter der Funktion RunStartupTasksForVSTO.

Tabelle 10. Parameter der Funktion RunStartupTasksForVSTO

Parameter

Definition

pdispHostAdapter

Gibt den Zeiger IDispatch auf den Schnittstellenzeiger IVstaHostAdapter an.

ResetToolboxItems

ResetToolboxItems setzt die InfoPath-Elemente in der Visual Studio Toolbox zurück.

C++

          STDAPI ResetToolboxItems();
        

 

Schlussbemerkung

Die Installation von Microsoft Visual Studio 2005 Tools für das Microsoft Office System stellt den benutzerdefinierten Projekttyp InfoPath Form Template bereit und integriert die Entwurfsumgebung Office InfoPath 2007 für Formularvorlagen als benutzerdefinierten Editor in die Entwicklungsumgebung Visual Studio 2005, wie im Visual Studio SDK dokumentiert. InfoPath 2007 unterstützt neun Methoden, die von der Visual Studio-Umgebung aufgerufen werden können, um verschiedene Aufgaben auszuführen, die sich auf ein InfoPath-Formularvorlagenprojekt beziehen.

 

Weitere Ressourcen

Weitere Informationen über die Entwicklung mit InfoPath finden Sie im Microsoft Office Developer Center: InfoPath Developer Portal (in englischer Sprache)

Weitere Informationen über VSTA finden Sie unter: