Personalizar os recursos de interface do usuário usando interfaces de extensibilidadeCustomize UI features by using extensibility interfaces

As ferramentas de desenvolvimento do Office no Visual Studio fornecem classes e designers que lidar com muitos detalhes de implementação quando usá-los para criar painéis de tarefas personalizados, personalizações da faixa de opções e regiões de formulário do Outlook em um suplemento do VSTO.The Office development tools in Visual Studio provide classes and designers that handle many implementation details when you use them to create custom task panes, ribbon customizations, and Outlook form regions in a VSTO Add-in. No entanto, você também pode implementar o interface de extensibilidade para cada recurso por conta própria, se você tiver requisitos especiais.However, you can also implement the extensibility interface for each feature yourself if you have special requirements.

Aplica-se a: as informações neste tópico se aplicam para adicionar o VSTO-em projetos.Applies to: The information in this topic applies to VSTO Add-in projects. Para obter mais informações, consulte recursos disponíveis por tipo de projeto e aplicativo do Office.For more information, see Features available by Office application and project type.

Visão geral das interfaces de extensibilidadeOverview of extensibility interfaces

Microsoft Office define um conjunto de interfaces de extensibilidade COM VSTO Add-ins podem ser implementados para personalizar determinados recursos, como a faixa de opções.Microsoft Office defines a set of extensibility interfaces that COM VSTO Add-ins can implement to customize certain features, such as the ribbon. Essas interfaces fornecem controle total sobre os recursos que eles fornecem acesso ao.These interfaces provide full control over the features they provide access to. No entanto, a implementação dessas interfaces requer algum conhecimento de interoperabilidade COM em código gerenciado.However, implementing these interfaces requires some knowledge of COM interoperability in managed code. Em alguns casos, o modelo de programação dessas interfaces também não é intuitivo para os desenvolvedores que estão acostumados com o .NET Framework.In some cases, the programming model of these interfaces is also not intuitive for developers who are accustomed to the .NET Framework.

Quando você cria um suplemento do VSTO usando os modelos de projeto do Office no Visual Studio, não é necessário que implementar as interfaces de extensibilidade para personalizar os recursos, como a faixa de opções.When you create a VSTO Add-in by using the Office project templates in Visual Studio, you do not have to implement the extensibility interfaces to customize features like the ribbon. O Visual Studio Tools para Office RuntimeVisual Studio Tools for Office runtime implementa essas interfaces para você.The Visual Studio Tools para Office RuntimeVisual Studio Tools for Office runtime implements these interfaces for you. Em vez disso, você pode usar classes de mais intuitivo e designers fornecidos pelo Visual Studio.Instead, you can use more intuitive classes and designers provided by Visual Studio. No entanto, você ainda pode implementar as interfaces de extensibilidade diretamente no seu suplemento do VSTO se você quiser.However, you can still implement the extensibility interfaces directly in your VSTO Add-in if you want to.

Para obter mais informações sobre as classes e os designers que o Visual Studio fornece para esses recursos, consulte painéis de tarefas personalizados, designer de faixa de opções, e Criar formulário do Outlook.For more information about the classes and designers that Visual Studio provides for these features, see Custom task panes, Ribbon designer, and Create Outlook form regions.

Interfaces de extensibilidade que você pode implementar em um suplemento do VSTOExtensibility interfaces you can implement in a VSTO Add-in

A tabela a seguir lista as interfaces de extensibilidade que você pode implementar e os aplicativos que dão suporte a eles.The following table lists the extensibility interfaces you can implement and the applications that support them.

InterfaceInterface DescriçãoDescription AplicativosApplications
IRibbonExtensibility Implemente essa interface para personalizar a interface do usuário da faixa de opções.Implement this interface to customize the ribbon UI. Observação: você pode adicionar uma da faixa de opções (XML) item a um projeto para gerar um padrão IRibbonExtensibility implementação no seu suplemento do VSTO.Note: You can add a Ribbon (XML) item to a project to generate a default IRibbonExtensibility implementation in your VSTO Add-in. Para obter mais informações, consulte XML da faixa de opções.For more information, see Ribbon XML. ExcelExcel

InfoPath 2013InfoPath 2013

InfoPath 2010InfoPath 2010

OutlookOutlook

PowerPointPowerPoint

ProjetoProject

VisioVisio

PalavraWord
Microsoft.Office.Core.ICustomTaskPaneConsumer Implemente essa interface para criar um painel de tarefas personalizado.Implement this interface to create a custom task pane. ExcelExcel

OutlookOutlook

PowerPointPowerPoint

PalavraWord
Microsoft.Office.Interop.Outlook.FormRegionStartup Implemente essa interface para criar uma região de formulário do Outlook.Implement this interface to create an Outlook form region. OutlookOutlook

Existem várias outras interfaces de extensibilidade que são definidos pelo Microsoft Office, como Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider, e Microsoft.Office.Core.SignatureProvider.There are several other extensibility interfaces that are defined by Microsoft Office, such as Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider, and Microsoft.Office.Core.SignatureProvider. Visual Studio não oferece suporte para a implementação dessas interfaces em um suplemento VSTO criado usando os modelos de projeto do Office.Visual Studio does not support implementing these interfaces in a VSTO Add-in created by using the Office project templates.

Use interfaces de extensibilidadeUse extensibility interfaces

Para personalizar um recurso de interface do usuário usando uma interface de extensibilidade, implemente a interface apropriada em seu projeto de suplemento do VSTO.To customize a UI feature by using an extensibility interface, implement the appropriate interface in your VSTO Add-in project. Em seguida, substituir o RequestService método para retornar uma instância da classe que implementa a interface.Then, override the RequestService method to return an instance of the class that implements the interface.

Para um aplicativo de exemplo que demonstra como implementar o IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer, e Microsoft.Office.Interop.Outlook.FormRegionStartup interfaces em um suplemento do VSTO para Outlook, consulte o exemplo do Gerenciador de interface do usuário no amostras de desenvolvimento do Office.For a sample application that demonstrates how to implement the IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer, and Microsoft.Office.Interop.Outlook.FormRegionStartup interfaces in a VSTO Add-in for Outlook, see the UI Manager Sample in Office development samples.

Exemplo de implementação de uma interface de extensibilidadeExample of implementing an extensibility interface

O exemplo de código a seguir demonstra uma implementação simples dos Microsoft.Office.Core.ICustomTaskPaneConsumer interface para criar um painel de tarefas personalizado.The following code example demonstrates a simple implementation of the Microsoft.Office.Core.ICustomTaskPaneConsumer interface to create a custom task pane. Este exemplo define duas classes:This example defines two classes:

  • O TaskPaneHelper implementos de classe Microsoft.Office.Core.ICustomTaskPaneConsumer para criar e exibir um painel de tarefas personalizado.The TaskPaneHelper class implements Microsoft.Office.Core.ICustomTaskPaneConsumer to create and display a custom task pane.

  • O TaskPaneUI classe fornece a interface do usuário do painel de tarefas.The TaskPaneUI class provides the UI of the task pane. Os atributos para o TaskPaneUI classe torná-la visível para COM, que permite que os aplicativos do Microsoft Office descobrir a classe.The attributes for the TaskPaneUI class make the class visible to COM, which enables Microsoft Office applications to discover the class. Neste exemplo, a interface do usuário é um vazio UserControl, mas você pode adicionar controles ao modificar o código.In this example, the UI is an empty UserControl, but you can add controls by modifying the code.

    Note

    Para expor os TaskPaneUI classe ao COM, você também deve definir o registrar para interoperabilidade COM propriedade para o projeto.To expose the TaskPaneUI class to COM, you must also set the Register for COM Interop property for the project.

    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");
                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 obter mais informações sobre como implementar Microsoft.Office.Core.ICustomTaskPaneConsumer, consulte criar painéis de tarefas personalizados no 2007 Office system na documentação do Microsoft Office.For more information about implementing Microsoft.Office.Core.ICustomTaskPaneConsumer, see Create custom task panes in the 2007 Office system in the Microsoft Office documentation.

Exemplo de substituição do método RequestServiceExample of overriding the RequestService method

O exemplo de código a seguir demonstra como substituir a RequestService método para retornar uma instância da TaskPaneHelper classe do exemplo de código anterior.The following code example demonstrates how to override the RequestService method to return an instance of the TaskPaneHelper class from the previous code example. Ele verifica o valor de serviceGuid parâmetro para determinar qual interface está sendo solicitada e, em seguida, retorna um objeto que implementa a interface.It checks the value of the serviceGuid parameter to determine which interface is being requested, and then returns an object that implements that interface.

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);
}

Consulte tambémSee also

Instruções passo a passo e exemplos de desenvolvimento do office Office development samples and walkthroughs
Suplementos do VSTO do programa Program VSTO Add-ins
Desenvolver soluções do Office Develop Office solutions
Chamar o código no VSTO Add-ins de outras soluções do Office Call code in VSTO Add-ins from other Office solutions
Como: criar projetos do Office no Visual Studio How to: Create Office projects in Visual Studio
Arquitetura de suplementos do VSTOArchitecture of VSTO Add-ins