Compartir a través de


Personalizar características de la interfaz de usuario mediante interfaces de extensibilidad

Las herramientas de desarrollo de Office en Visual Studio proporcionan clases y diseñadores que administran muchos detalles de implementación que se usan para crear paneles de tareas personalizados, personalizaciones de la cinta de opciones y áreas de formulario de Outlook en un complemento de nivel de aplicación. Sin embargo, también puede implementar la interfaz de extensibilidad de cada característica si tiene requisitos especiales.

Se aplica a: la información de este tema se aplica a los proyectos de nivel de aplicación para Microsoft Office 2010 y 2007 Microsoft Office System. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.

Información general sobre las interfaces de extensibilidad

Microsoft Office define un conjunto de interfaces de extensibilidad que los complementos COM pueden implementar para personalizar ciertas características como la Cinta de opciones. Estas interfaces proporcionan un control completo de las características a las que proporcionan acceso. Sin embargo, al implementar estas interfaces, se requieren conocimientos de la interoperabilidad COM en código administrado. En algunos casos, el modelo de programación de estas interfaces tampoco es intuitivo para los desarrolladores acostumbrados a .NET Framework.

Al crear un complemento con las plantillas de proyecto de Office en Visual Studio, no tiene que implementar las interfaces de extensibilidad para personalizar características como la Cinta de opciones. Motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office implementa estas interfaces automáticamente. En su lugar, puede usar las clases y los diseñadores más intuitivos que proporciona Visual Studio. Sin embargo, todavía podrá implementar las interfaces de extensibilidad directamente en el complemento, si así lo desea.

Para obtener más información sobre las clases y los diseñadores que Visual Studio proporciona para estas características, vea Información general sobre los paneles de tareas personalizados, Diseñador de la cinta de opciones y Crear áreas de formulario de Outlook.

Interfaces de extensibilidad que puede implementar en un complemento

En la tabla siguiente se enumeran las interfaces de extensibilidad que puede implementar y las aplicaciones que las admiten.

Interface

Descripción

Aplicaciones

Microsoft.Office.Core.IRibbonExtensibility

Implemente esta interfaz para personalizar la interfaz de usuario de la cinta de opciones.

NotaNota
Puede agregar un elemento Cinta (XML) a un proyecto para generar una implementación de Microsoft.Office.Core.IRibbonExtensibility predeterminada en el complemento.Para obtener más información, vea XML de la cinta de opciones.

Excel 2007 y Excel 2010

InfoPath 2010

Outlook 2007 y Outlook 2010

PowerPoint 2007 y PowerPoint 2010

Project 2010

Visio 2010

Word 2007 y Word 2010

Microsoft.Office.Core.ICustomTaskPaneConsumer

Implemente esta interfaz para crear un panel de tareas personalizado.

Excel 2007 y Excel 2010

Outlook 2007 y Outlook 2010

PowerPoint 2007 y PowerPoint 2010

Word 2007 y Word 2010

Microsoft.Office.Interop.Outlook.FormRegionStartup

Implemente esta interfaz para crear un área de formulario de Outlook.

Outlook 2007 y Outlook 2010

Hay otras interfaces de extensibilidad que define Microsoft Office, como Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider y Microsoft.Office.Core.SignatureProvider. Visual Studio no admite la implementación de estas interfaces en un complemento creado mediante las plantillas de proyecto de Office.

Utilizar las interfaces de extensibilidad

Para personalizar una característica de la interfaz de usuario con una interfaz de extensibilidad, implemente la interfaz adecuada en el proyecto de complemento. A continuación, invalide el método RequestService para devolver una instancia de la clase que implementa la interfaz.

Para tener acceso a una aplicación de ejemplo que muestra cómo implementar las interfaces Microsoft.Office.Core.IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer y Microsoft.Office.Interop.Outlook.FormRegionStartup en un complemento para Excel, vea el ejemplo de UI Manager en Ejemplos de desarrollo de Office.

Ejemplo de implementación de una interfaz de extensibilidad

En el ejemplo de código siguiente se muestra una implementación sencilla de la interfaz Microsoft.Office.Core.ICustomTaskPaneConsumer para crear un panel de tareas personalizado. Este ejemplo define dos clases:

  • La clase TaskPaneHelper implementa Microsoft.Office.Core.ICustomTaskPaneConsumer para crear y mostrar un panel de tareas personalizado.

  • La clase TaskPaneUI proporciona la interfaz de usuario del panel de tareas. Los atributos de la clase TaskPaneUI hacen que ésta esté visible para COM, lo que permite a las aplicaciones de Microsoft Office detectarla. En este ejemplo, la interfaz de usuario es un objeto UserControlvacío, pero puede agregar controles si modifica el código.

    Nota

    Para exponer la clase TaskPaneUI a COM, también debe establecer la propiedad Registrar para interoperabilidad COM del proyecto. Para obtener más información, consulte Cómo: Registrar un componente para interoperabilidad COM.

Public Class TaskPaneHelper
    Implements Office.ICustomTaskPaneConsumer

    Friend taskPane As Office.CustomTaskPane

    Public Sub CTPFactoryAvailable(ByVal CTPFactoryInst As Office.ICTPFactory) _
        Implements Office.ICustomTaskPaneConsumer.CTPFactoryAvailable

        If CTPFactoryInst IsNot Nothing Then
            ' Create a new task pane.
            taskPane = CTPFactoryInst.CreateCTP( _
                "Microsoft.Samples.Vsto.VB.TaskPaneUI", "Contoso")
            taskPane.Visible = True
        End If
    End Sub
End Class

<System.Runtime.InteropServices.ComVisible(True)> _
<System.Runtime.InteropServices.ProgId("Microsoft.Samples.Vsto.VB.TaskPaneUI")> _
<System.Runtime.InteropServices.Guid("FFA0920E-F7A5-453d-8AB2-249F4C25B4B2")> _
Public Class TaskPaneUI
    Inherits UserControl
End Class
public class TaskPaneHelper : Office.ICustomTaskPaneConsumer
{
    internal Office.CustomTaskPane taskPane;

    public void CTPFactoryAvailable(Office.ICTPFactory CTPFactoryInst)
    {
        if (CTPFactoryInst != null)
        {
            // Create a new task pane.
            taskPane = CTPFactoryInst.CreateCTP(
                "Microsoft.Samples.Vsto.CS.TaskPaneUI",
                "Contoso", Type.Missing);
            taskPane.Visible = true;
        }
    }
}

[System.Runtime.InteropServices.ComVisible(true)]
[System.Runtime.InteropServices.ProgId("Microsoft.Samples.Vsto.CS.TaskPaneUI")]
[System.Runtime.InteropServices.Guid("FFA0920E-F7A5-453d-8AB2-249F4C25B4B2")]
public class TaskPaneUI : UserControl
{
}

Para obtener más información sobre cómo implementar Microsoft.Office.Core.ICustomTaskPaneConsumer, vea Creating Custom Task Panes in the 2007 Office System en la documentación de Microsoft Office.

Ejemplo de invalidación del método RequestService

En el ejemplo de código siguiente se muestra la forma de invalidar el método RequestService para devolver una instancia de la clase TaskPaneHelper del ejemplo de código anterior. Comprueba el valor del parámetro serviceGuid para determinar qué interfaz se solicita y, a continuación, devuelve un objeto que implementa esta interfaz.

Friend taskPaneHelper1 As TaskPaneHelper

Protected Overrides Function RequestService( _
    ByVal serviceGuid As Guid) As Object

    If (serviceGuid = GetType(Office.ICustomTaskPaneConsumer).GUID) Then
        If (taskPaneHelper1 Is Nothing) Then
            taskPaneHelper1 = New TaskPaneHelper()
        End If
        Return taskPaneHelper1
    End If

    Return MyBase.RequestService(serviceGuid)
End Function
internal TaskPaneHelper taskPaneHelper1;

protected override object RequestService(Guid serviceGuid)
{
    if (serviceGuid == typeof(Office.ICustomTaskPaneConsumer).GUID)
    {
        if (taskPaneHelper1 == null)
        {
            taskPaneHelper1 = new TaskPaneHelper();
        }
        return taskPaneHelper1;
    }

    return base.RequestService(serviceGuid);
}

Vea también

Tareas

Cómo: Crear proyectos de Office en Visual Studio

Conceptos

Llamar a código en complementos de nivel de aplicación desde otras soluciones de Office

Arquitectura de los complementos de nivel de aplicación

Otros recursos

Ejemplos y tutoriales del desarrollo de Office

Programar complementos de nivel de aplicación

Desarrollar soluciones de Office