Compartir a través de


Acerca del ensamblado de interoperabilidad primario de Microsoft Office InfoPath

Microsoft Office InfoPath 2007 es una aplicación COM (Modelo de objetos componentes) que expone sus interfaces de programación tanto para la automatización externa como para el script que se utiliza en las plantillas de formulario como interfaces COM. Para poder admitir la creación de soluciones de InfoPath que utilice lenguajes de código administrador como Visual C# y Visual Basic, la opción Compatibilidad con programación de .NET del programa de instalaciñon de Office InfoPath 2007 instala tres ensamblados de interoperabilidad. Estos son ensamblados .NET que actúan como puente entre el código administrado y el código no administrado, para lo que asignan miembros de los objetos COM a los miembros .NET administrados equivalentes.

Los archivos de los tres ensamblados de interoperabilidad que instala InfoPath se llaman:

  • Microsoft.Office.Interop.InfoPath.dll

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

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

En este tema trata el modelo de objetos que se expone a través del ensamblado de interoperabilidad Microsoft.Office.Interop.InfoPath, que se utiliza de forma exclusiva para el código de automatización externa. Para obtener información acerca del ensamblado Microsoft.Office.Interop.InfoPath.SemiTrust, utilizado exclusivamente para escribir y ejecutar código administrado que se ejecuta desde las propias plantillas de formulario de InfoPath (.xsn), consulte Modelos de objetos compatibles con InfoPath 2003.

Información importante acerca de la instalación

De forma predeterminada, la opción Típica del programa de instalación de Office InfoPath 2007 instala el ensamblado Microsoft.Office.Interop.InfoPath en la caché de ensamblados global (GAC), cuyo contenido se puede ver en la carpeta C:\Windows\Assembly. Este ensamblado se conoce como el "ensamblado de interoperabilidad primaria de Microsoft Office InfoPath" y se suele utilizar en conjunción con el ensamblado Microsoft.Office.Interop.InfoPath.Xml, que también se instala en la GAC, para automatizar la aplicación InfoPath desde aplicaciones externas que utilizan código administrado. Para obtener información acerca del ensamblado Microsoft.Office.Interop.InfoPath.Xml, consulte Acerca del ensamblado de interoperabilidad XML de InfoPath.

Si el ensamblado de Microsoft.Office.Interop.InfoPath no es visible en GAC, debe confirmar que Office InfoPath 2007 se ha instalado correctamente. La opción Compatibilidad con programación de .NET del programa de instalación se establece en Ejecutar desde mi PC en una instalación Típica de InfoPath, siempre que el redistribuible de .NET Framework 1.1 o el kit de desarrollo de software (SDK) de .NET Framework 1.1 esté instalado antes de ejecutar la instalación. Si estos ensamblados de interoperabilidad no están disponibles en el equipo, debe confirmar que .NET Framework 1.1 está instalado, a continuación, ejecutar Agregar o quitar programas en el Panel de control y, finalmente, elegir Ejecutar desde mi PC en la opción Compatibilidad con programación de .Net de Microsoft Office InfoPath.

Para obtener información acerca de cómo descargar el redistribuible de .NET Framework 1.1, consulte Redistribuible de .NET Framework 1.1.

El espacio de nombres Microsoft.Office.Interop.InfoPath

Aunque el proceso de escribir código administrado para una tarea dada en una plantilla de formulario de InfoPath es muy similar a la realización de la misma tarea de programación con un lenguaje COM como Microsoft Visual Basic o JScript, el modelo de objetos que se muestra al visualizar el espacio de nombres Microsoft.Office.Interop.InfoPath desde el Examinador de objetos de Microsoft Visual Studio es más complejo. Ello se debe a que la interoperabilidad con .NET Framework requiere que un servidor COM muestre todas sus interfaces públicas, así como algunas construcciones adicionales que requiere el propio .NET Framework. Para obtener más información acerca de la forma y el motivo por el que el modelo de objetos que muestra un ensamblado de interoperabilidad es más complejo, consulte la sección "Cómo se muestran los objetos COM en código administrado" del tema Modelos de objetos compatibles con InfoPath 2003.

Uso de IntelliSense

En los ejemplos de esta sección se supone que se han establecido referencias a los ensamblados Microsoft.Office.Interop.InfoPath y Microsoft.Office.Interop.InfoPath.Xml. Para obtener más información acerca de esta operación así como ejemplos de automatización externa, consulte Ejemplos y escenarios de la automatización externa.

Para poder utilizar la finalización de instrucciones de Microsoft IntelliSense en código de automatización externa, hay que crear una variable de objeto para una instancia de la clase Application, como se muestra en la siguiente línea de código.

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

Después de crear la variable de objeto, al escribir el nombre de la variable seguido de un punto, se muestra una lista desplegable con los miembros de la clase Application que se van a seleccionar.

Para trabajar con un formulario de InfoPath, hay que declarar una variable de objeto del tipo XDocument y, a continuación, inicializarla; para ello, abra el formulario desde la colección XDocuments de la variable de objeto Application, como se muestra en la siguiente línea de código.

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 lista desplegable de finalización de instrucciones de IntelliSense para los miembros de la clase XDocument se mostrará al escribir el nombre de la variable seguido de un punto.

Para trabajar con el contenido del documento XML subyacente del formulario con Microsoft XML Core Services (MSXML) 5.0 para Microsoft Office, debe crear una variable del tipo IXMLDOMDocument2 y, a continuación, utilizar la propiedad DOM de la clase XDocument para asignar el modelo de objetos de documento (DOM) XML del formulario a dicha variable.

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

La lista desplegable de finalización de instrucciones de IntelliSense para los miembros de la clase IXMLDOMDocument2 se mostrará al escribir el nombre de la variable seguido de un punto, lo que permite utilizar MSXML 5.0 para trabajar con el documento XML.

Uso de la documentación de referencia de la biblioteca de clases

La organización de la documentación de referencia de la Biblioteca de clases del espacio de nombres Microsoft.Office.Interop.InfoPath refleja las relaciones entre las interfaces de la coclase y las interfaces heredadas que implementan. Los temas se organizan de la misma forma que la Referencia del modelo de objetos de InfoPath para escribir un script que forme parte de la Referencia del programador de InfoPath, que se incluye en Office InfoPath 2007. A excepción de los temas para las interfaces Application y XDocument, todos los demás temas de las interfaces de la coclase COM se asignan a los temas "Objeto" y "Colección" equivalentes de la referencia de los scripts de InfoPath. Por ejemplo, los temas "UIObject Interface" y "WindowsCollection Interface" de la documentación de referencia del espaco de nombres Microsoft.Office.Interop.InfoPath se asignan al mismo contenido, o a un contenido similar, que los temas "UI Object" y "Windows Collection" de la referencia de scripts de la Referencia del modelo de objetos de InfoPath.

Sin embargo, el vínculo a los miembros de la interfaz de coclase que aparece tras la descripción de la interfaz al principio del tema muestra un tema vacío. Para mostrar la lista de miembros que la interfaz de coclase implementa, debe abrir el tema de la interfaz más reciente que hereda la coclase y, seguidamente, abrir la tabla de sus miembros. Al principio de la sección Comentarios del tema de la interfaz de coclase, se proporciona un vínculo a la interfaz heredada.

Al presionar F1 en el Editor de código de Visual Studio, el comportamiento es similar, salvo que el miembro sobre el que se invoque la Ayuda de F1 se mostrará directamente, ya que lo habitual es que se trabaje con miembros de una interfaz. Sin embargo, el hecho de que se pueda implementar un miembro de una interfaz que tenga asignada una versión puede causar confusión la primera vez que el usuario se encuentre con él. Por ejemplo, si escribe myXDocument.UI.Alert, coloca el cursor en Alert y presiona F1, se muestra el tema "UI2.Alert Method". Esto se debe a que el método Alert es una implementación de un miembro de la interfaz UI2.

Paso de parámetros opcionales a miembros del modelo de objetos de InfoPath

Si un miembro del modelo de objetos de InfoPath contiene un parámetro opcional y no se especifica ningún valor para el mismo, debe pasar el campo Type.Missing de dicho parámetro. Si no pasa el campo Type.Missing cuando se omite un valor real, se producirá un error de generación. Esto sucede en el código escrito tanto en C# como en Visual Basic .NET. Por ejemplo, el método SelectNodes de la interfaz ViewObject incluye dos parámetros opcionales: varEndNode y varViewContext. Una línea de código que no especifique los valores reales de estos parámetros opcionales se debería asemejar a los siguientes ejemplos.

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

Vea también

Conceptos

Ejemplos y escenarios de la automatización externa