Compartir a través de


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

Actualización: noviembre 2007

Se aplica a

La información de este tema sólo se aplica a los proyectos y versiones especificados de Visual Studio Tools para Office de Microsoft Office.

Tipo de proyecto

  • Proyectos de nivel de aplicación

Versión de Microsoft Office

  • Microsoft Office System 2007

Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto.

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

Información general sobre las interfaces de extensibilidad

Las aplicaciones de 2007 Microsoft Office system definen un conjunto de interfaces de extensibilidad que los complementos COM pueden implementar para personalizar determinadas características de interfaz de usuario. Visual Studio Tools para Office simplifica este proceso implementando estas interfaces automáticamente y proporcionando clases y diseñadores que puede utilizar en su lugar. Sin embargo, también puede implementar directamente las interfaces de extensibilidad en el complemento.

Para obtener más información sobre las clases y los diseñadores que Visual Studio Tools para Office proporciona para estas características, vea Información general sobre los paneles de tareas personalizados, diseñador de la cinta de opcionesy 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

Description

Aplicaciones

Microsoft.Office.Core.IRibbonExtensibility

Implemente esta interfaz para personalizar la interfaz de usuario de la cinta de opciones. Para obtener más información, vea IRibbonExtensibility Object en la documentación de Microsoft Office 2007.

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

Excel 2007

InfoPath 2007

Outlook 2007

PowerPoint 2007

Word 2007

Microsoft.Office.Core.ICustomTaskPaneConsumer

Implemente esta interfaz para crear un panel de tareas personalizado. Para obtener más información, vea ICustomTaskPaneConsumer Object en la documentación de Microsoft Office 2007.

Excel 2007

Outlook 2007

PowerPoint 2007

Word 2007

Microsoft.Office.Interop.Outlook.FormRegionStartup

Implemente esta interfaz para crear un área de formulario de Outlook. Para obtener más información, vea FormRegionStartup Interface en la documentación de Microsoft Office 2007.

Outlook 2007

Hay otras interfaces de extensibilidad que definen las aplicaciones en 2007 Microsoft Office system, como Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider y Microsoft.Office.Core.SignatureProvider. Visual Studio Tools para Office no permite implementar estas interfaces en un complemento.

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 y Microsoft.Office.Core.ICustomTaskPaneConsumer en un complemento para Excel, vea Ejemplo Runtime Services.

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 2007.

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

Ejemplo Runtime Services

Cómo: Crear proyectos de Visual Studio para Office

Conceptos

Programar complementos de nivel de aplicación

Desarrollar soluciones de Office

Elemento host AddIn

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