À propos de l'assembly PIA (Primary Interop Assembly) de Microsoft Office InfoPath

L'application Microsoft Office InfoPath 2007 est une application COM (Component Object Model) et offre l'accès à ses interfaces de programmation à la fois pour l'automatisation externe et pour les scripts utilisés depuis des modèles de formulaires comme interfaces COM. Pour permettre la création de solutions InfoPath qui utilisent les langages de code managé de Visual C# et Visual Basic, l'option Prise en charge de la programmabilité .NET du programme d'installation Office InfoPath 2007 installe trois assemblys d'interopérabilité. Les assemblys d'interopérabilité sont des assemblys .NET qui font office de lien entre le code managé et le code non managé et qui appliquent une correspondance entre les membres des objets COM et les membres managés équivalents de .NET.

Les fichiers des trois assemblys d'interopérabilité installés par InfoPath sont les suivants :

  • Microsoft.Office.Interop.InfoPath.dll

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

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

Cette rubrique présente le modèle objet exposé dans l'assembly d'interopérabilité Microsoft.Office.Interop.InfoPath, utilisé exclusivement pour les codes d'automatisation externes. Pour plus d'informations sur l'assembly Microsoft.Office.Interop.InfoPath.SemiTrust, utilisé exclusivement pour la création et l'exécution d'un code managé à partir de modèles de formulaires (.xsn), voir Modèles objet compatibles avec InfoPath 2003.

Informations importantes concernant l'installation

L'option Installation par défaut du programme d'installation Office InfoPath 2007 installe l'assembly Microsoft.Office.Interop.InfoPath dans le Global Assembly Cache (GAC), dont le contenu est consultable depuis le dossier C:\Windows\Assembly. Cet assembly est appelé « Microsoft Office InfoPath Primary Interop Assembly » et est habituellement utilisé avec l'assembly Microsoft.Office.Interop.InfoPath.Xml, également installé dans le GAC, pour que l'application InfoPath puisse fonctionner indépendamment des applications externes qui utilisent du code managé. Pour plus d'informations sur l'assembly Microsoft.Office.Interop.InfoPath.Xml, voir À propos de l'assembly d'interopérabilité XML d'InfoPath.

Si l'assembly Microsoft.Office.Interop.InfoPath n'est pas visible dans le GAC, vérifiez que Office InfoPath 2007 est correctement installé. Si .NET Framework 1.1 Redistributable ou .NET Framework 1.1 Software Development Kit (SDK) est installé avant le démarrage du programme d'installation, l'option Prise en charge de la programmabilité .NET du programme d'installation d'InfoPath est définie sur Exécuter à partir du disque dur pour une Installation par défaut d'InfoPath. Si ces assemblys d'interopérabilité ne sont pas disponibles sur votre ordinateur, vérifiez que .NET Framework 1.1 est installé puis exécutez Ajout/Suppression de programmes depuis le Panneau de configuration et définissez l'option Prise en charge de la programmabilité .NET de Microsoft Office InfoPath sur Exécuter à partir du disque dur.

Pour plus d'informations sur le téléchargement de .NET Framework 1.1 Redistributable, voir .NET Framework 1.1 Redistributable (en anglais).

Espace de noms Microsoft.Office.Interop.InfoPath

Bien que le processus de création de code managé pour une tâche donnée dans un modèle de formulaire InfoPath reste très similaire à la tâche de programmation à l'aide d'un langage COM tel que Microsoft Visual Basic ou JScript, le modèle objet exposé lors de l'affichage de l'espace de noms Microsoft.Office.Interop.InfoPath dans l'Explorateur d'objets de Microsoft Visual Studio paraît plus complexe. Ceci est dû au fait que la technologie d'interopérabilité .NET Framework nécessite un serveur COM pour exposer toutes ses interfaces publiques, ainsi que quelques constructions supplémentaires requises par .NET Framework. Pour mieux comprendre pourquoi le modèle d'objet exposé par un assembly d'interopérabilité paraît plus complexe, reportez-vous à la section « Comment les objets COM sont exposés au code managé » de la rubrique Modèles objet compatibles avec InfoPath 2003.

Utilisation d'IntelliSense

Les exemples de cette section considèrent que vous avez déjà créé des références pour les assemblys Microsoft.Office.Interop.InfoPath et Microsoft.Office.Interop.InfoPath.Xml. Pour plus d'informations sur la procédure de création de références et pour consulter des exemples sur l'automatisation externe, voir Exemples et scénarios sur l'automatisation externe.

Pour pouvoir utiliser la saisie semi-automatique des instructions Microsoft IntelliSense en code d'automatisation externe, vous devez créer une variable objet de type Application, comme illustré dans la ligne de code ci-dessous.

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

Une fois la variable objet créée, lorsque vous entrez le nom de la variable suivi d'un point, une liste déroulante s'affiche. Celle-ci répertorie les membres de la classe Application à sélectionner.

Pour travailler avec un formulaire InfoPath, vous devez déclarer une variable objet de type XDocument, puis la lancer en ouvrant le formulaire à partir de la collection XDocuments de la variable objet Application, comme illustré dans la ligne de code ci-dessous.

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)

La liste déroulante de saisie automatique des instructions IntelliSense pour les membres de la catégorie XDocument s'affiche lorsque vous entrez le nom de la variable suivi d'un point.

Pour utiliser le contenu du document XML sous-jacent du formulaire à l'aide de Microsoft XML Core Services (MSXML) 5.0 pour Microsoft Office, vous devez créer une variable de type IXMLDOMDocument2, puis utiliser la propriété DOM de la catégorie XDocument pour attribuer le DOM (Document Object Model) XML du formulaire à cette variable.

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

La liste déroulante de saisie automatique des instructions IntelliSense pour les membres de la catégorie IXMLDOMDocument2 s'affiche lorsque vous entrez le nom de la variable suivi d'un point, ce qui vous permet d'utiliser MSXML 5.0 avec votre document XML.

Utilisation de la documentation de référence de la bibliothèque de classes

L'organisation de l'espace de noms dans la documentation de référence de la bibliothèque de classes Microsoft.Office.Interop.InfoPath reflète les relations entre les interfaces de coclasse et les interfaces héritées qu'elles implémentent. Les rubriques sont organisées de la même manière que dans la référence du modèle objet InfoPath dans le Guide de référence du développeur d'InfoPath, inclus dans Office InfoPath 2007. À l'exception des rubriques relatives aux interfaces Application et XDocument, toutes les rubriques des interfaces de coclasse COM correspondent aux rubriques « Object » et « Collection » équivalentes dans la référence sur les scripts d'InfoPath. Par exemple, les rubriques « UIObject Interface » et « WindowsCollection Interface » de la documentation de référence de l'espace de noms Microsoft.Office.Interop.InfoPath correspondent à un contenu similaire dans les rubriques « UI Object » et « Windows Collection » de la référence sur les scripts du modèle objet InfoPath.

Toutefois, le lien vers les membres de l'interface de coclasse qui suit la description de l'interface en début de rubrique aboutit à une rubrique vide. Pour afficher la liste des membres implémentés par l'interface de coclasse, vous devez ouvrir la rubrique de la dernière interface héritée par la coclasse, puis ouvrir la table de ses membres. Un lien vers l'interface héritée est proposé au début de la section Remarques de la rubrique consacrée à l'interface de coclasse.

Lorsque vous appuyez sur la touche F1 dans l'Éditeur de code de Visual Studio, le comportement est similaire, excepté que le membre pour lequel vous invoquez l'aide est affiché directement car vous travaillez le plus souvent avec des membres d'une interface. Cependant, le fait qu'un membre puisse être implémenté depuis une interface avec version peut paraître confus la première fois que vous y êtes confronté. Par exemple, si vous tapez myXDocument.UI.Alert puis que vous placez le curseur sur Alert et que vous appuyez sur F1, une rubrique intitulée « UI2.Alert Method » s'affiche. Ceci est dû au fait que la méthode Alert est une implémentation d'un membre de l'interface UI2.

Transmission de paramètres facultatifs à des membres du modèle objet InfoPath

Si un membre du modèle objet InfoPath contient un paramètre facultatif et que vous ne spécifiez pas de valeur pour ce paramètre, vous devez transmettre le champ Type.Missing de ce paramètre. Si vous ne transmettez pas le champ Type.Missing alors que la valeur est omise, cela provoque une erreur de compilation. Ceci se produit aussi bien pour le code écrit en Visual C# qu'en Visual Basic. Par exemple, la méthode SelectNodes de l'interface ViewObject comprend deux paramètres facultatifs : varEndNode et varViewContext. Une ligne de code dans laquelle les valeurs de ces deux paramètres ne sont pas spécifiées doit ressembler aux exemples suivants.

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

Voir aussi

Concepts

Exemples et scénarios sur l'automatisation externe