Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’application InfoPath est générée en tant qu’application COM (Component Object Model) qui expose ses interfaces de programmabilité pour l’automatisation externe en tant qu’interfaces COM. Pour prendre en charge la création de solutions InfoPath qui utilisent des langages de code managé tels que Visual C# et Visual Basic, l’option Prise en charge de la programmabilité .NET dans le programme d’installation d’InfoPath 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 mappent les membres des objets COM avec les membres managés .NET équivalents.
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 décrit le modèle objet exposé via l’assembly d’interopérabilité Microsoft.Office.Interop.InfoPath, qui est utilisé exclusivement pour le code d’automatisation externe. Pour plus d’informations sur l’assembly Microsoft.Office.Interop.InfoPath.SemiTrust, qui est utilisé exclusivement pour l’écriture et l’exécution de code managé qui s’exécute à partir de modèles de formulaire InfoPath (.xsn), voir Modèles objet compatibles InfoPath 2003.
Informations importantes concernant l'installation
L’option d’installation par défaut du programme d’installation d’InfoPath installe l’assembly Microsoft.Office.Interop.InfoPath dans le Global Assembly Cache (GAC), dont le contenu peut être affiché à partir du dossier C :\Windows\Assembly (ou dans C :\Windows\assembly\GAC_MSIL lors de l’affichage du système de fichiers directement). Cet assembly est appelé « Microsoft Office InfoPath Primary Interop Assembly » et est souvent utilisé conjointement avec l’assembly Microsoft.Office.Interop.InfoPath.Xml, qui est également installé dans le GAC, pour automatiser l’application InfoPath à partir d’applications externes qui utilisent du code managé. Pour plus d’informations sur l’assembly Microsoft.Office.Interop.InfoPath.Xml, consultez À propos de l’assembly d’interopérabilité XML InfoPath.
Si l’assembly Microsoft.Office.Interop.InfoPath n’est pas visible dans le GAC, vous devez vérifier qu’InfoPath a été installé correctement. Par défaut, l’option Prise en charge de la programmabilité .NET dans le programme d’installation est définie sur Exécuter à partir du poste de travail tant que .NET Framework 1.1 Redistributable, le Kit de développement logiciel (SDK) .NET Framework 1.1 ou une version ultérieure du .NET Framework sont installés avant l’exécution du programme d’installation. Si ces assemblys d’interopérabilité ne sont pas disponibles sur votre ordinateur, vous devez vérifier que .NET Framework 1.1 ou version ultérieure est installé, puis utiliser Programmes et fonctionnalités du Panneau de configuration pour modifier l’installation en définissant l’option Prise en charge de la programmabilité .NET sous Microsoft Office InfoPath sur Exécuter à partir du poste de travail.
Pour plus d’informations sur le téléchargement de .NET Framework 1.1 Redistributable, consultez .NET Framework 1.1 Redistributable.
Espace de noms Microsoft.Office.Interop.InfoPath
Bien que le processus d’écriture de code managé pour une tâche donnée soit très similaire à l’exécution de la même tâche à l’aide d’un langage tel que Visual Basic pour Applications ou JScript, le modèle objet exposé lors de l’affichage de l’espace de noms Microsoft.Office.Interop.InfoPath à partir de l’Explorateur d’objets dans Microsoft Visual Studio semble plus complexe. En effet, l’interopérabilité avec le .NET Framework nécessite qu’un serveur COM expose toutes ses interfaces publiques, ainsi que certaines constructions supplémentaires requises par le .NET Framework lui-même. Pour plus d’informations sur la façon dont et pourquoi le modèle objet exposé par un assembly d’interopérabilité semble plus complexe, consultez la section « Comment les objets COM sont exposés au code managé » de la rubrique Modèles d’objet compatibles InfoPath 2003 .
Utilisation d'IntelliSense
Les exemples de cette section supposent que vous avez établi des références aux assemblys Microsoft.Office.Interop.InfoPath et Microsoft.Office.Interop.InfoPath.Xml. Pour plus d’informations sur la définition de références et d’exemples d’automatisation externe supplémentaires, consultez Scénarios et exemples d’automatisation externe.
Avant de pouvoir utiliser la saisie semi-automatique d’instruction Microsoft IntelliSense dans du code d’automatisation externe, vous devez créer une variable objet pour un instance de la classe Application, comme illustré dans la ligne de code suivante.
Application myApp =
new Microsoft.Office.Interop.InfoPath.Application();
Dim myApp As Application = _
New Microsoft.Office.Interop.InfoPath.Application()
Après avoir créé la variable objet, lorsque vous tapez le nom de la variable suivi d’un point, une liste déroulante s’affiche avec les membres de la classe Application à sélectionner.
Pour utiliser un formulaire InfoPath, déclarez une variable objet de type XDocument , puis initialisez-la en ouvrant le formulaire à partir de la collection XDocuments de la variable objet Application , comme indiqué dans la ligne de code suivante.
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 semi-automatique de l’instruction IntelliSense pour les membres de la classe XDocument s’affiche lorsque vous tapez le nom de la variable suivi d’un point.
Pour utiliser le contenu du document XML sous-jacent pour le formulaire à l’aide de Microsoft XML Core Services® (MSXML), vous devez créer une variable de type IXMLDOMDocument2 , puis utiliser la propriété DOM de la classe XDocument pour affecter le modè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 semi-automatique de l’instruction IntelliSense pour les membres de la classe IXMLDOMDocument2 s’affiche lorsque vous tapez le nom de la variable suivi d’un point, ce qui vous permet d’utiliser MSXML pour travailler avec le document XML.
Utilisation de la documentation de référence de la bibliothèque de classes
La organization de la documentation de référence de la bibliothèque de classes de l’espace de noms Microsoft.Office.Interop.InfoPath reflète les relations entre les interfaces de coclasse et les interfaces héritées qu’elles implémentent.
Lorsque vous ouvrez une rubrique pour une interface de coclasse, telle que Application , le lien vers les membres de l’interface de coclasse suivant la description de l’interface au début de la rubrique affiche 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 F1 dans le Visual Studio Code Rédacteur, le comportement est similaire, sauf que le membre sur lequel vous appelez l’aide F1 s’affiche directement, car vous travaillez généralement 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
et placez le curseur sur et appuyez sur Alert
F1, une rubrique intitulée « UI2. Méthode d’alerte » 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 pour ce paramètre. Si vous ne transmettez pas le champ Type.Missing alors que la valeur est omise, cela provoque une erreur de compilation. Cela est vrai pour le code écrit en C# et Visual Basic. Par exemple, la méthode SelectNodes de l’interface ViewObject inclut 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)