Personalizando os recursos de interface do usuário usando Interfaces de extensibilidade

As ferramentas de desenvolvimento do Office em Visual Studio fornecem classes e os designers que lidam com muitos detalhes de implementação, quando você usá-los para criar regiões de formulário do Outlook, as personalizações da faixa de opções e painéis de tarefas personalizados em um suplemento em nível de aplicativo. No entanto, você também pode implementar a interface de extensibilidade para cada recurso mesmo se você tiver requisitos especiais.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de aplicativo para Microsoft Office 2010 e o sistema 2007 do Microsoft Office. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Visão geral das Interfaces de extensibilidade

Microsoft Office define um conjunto de interfaces de extensibilidade suplementos COM podem implementar para personalizar determinados recursos como, por exemplo, a faixa de opções. Essas interfaces fornecem controle total sobre os recursos que eles fornecem acesso a. Entretanto, a implementação dessas interfaces requer algum conhecimento de interoperabilidade COM em código gerenciado. Em alguns casos, o modelo de programação dessas interfaces também não é intuitivo para os desenvolvedores que estejam acostumados com o.NET Framework.

Quando você cria um add-in usando os modelos de projeto do Office em Visual Studio, não é necessário implementar as interfaces de extensibilidade para personalizar os recursos, como a faixa de opções. O Visual Studio Tools for Office runtime implementa essas interfaces. Em vez disso, você pode usar mais intuitiva de classes e designers fornecidos pelo Visual Studio. No entanto, você ainda pode implementar as interfaces de extensibilidade diretamente no seu suplemento se desejar.

Para obter mais informações sobre as classes e os designers Visual Studio fornece para esses recursos, consulte Visão geral sobre painéis de tarefas personalizado, Designer de faixa de opções, e Criação de regiões de formulário do Outlook.

Você pode implementar um suplemento de Interfaces de extensibilidade

A tabela a seguir lista as interfaces de extensibilidade, que você pode implementar e os aplicativos que lhes dão suporte.

Interface

Description

Applications

Microsoft.Office.Core.IRibbonExtensibility

Implemente essa interface para personalizar a interface do usuário.

ObservaçãoObservação
Você pode adicionar um Da faixa de opções (XML) item a um projeto para gerar um padrão Microsoft.Office.Core.IRibbonExtensibility implementação no seu add-in.For more information, see XML da faixa de opções.

Excel 2007 e Excel 2010

InfoPath 2010

O Outlook 2007 e o Outlook 2010

PowerPoint 2007 e PowerPoint 2010

Project 2010

Visio 2010

Word 2007 e Word 2010

Microsoft.Office.Core.ICustomTaskPaneConsumer

Implemente essa interface para criar um painel de tarefas personalizado.

Excel 2007 e Excel 2010

O Outlook 2007 e o Outlook 2010

PowerPoint 2007 e PowerPoint 2010

Word 2007 e Word 2010

Microsoft.Office.Interop.Outlook.FormRegionStartup

Implemente essa interface para criar uma região de formulário do Outlook.

O Outlook 2007 e o Outlook 2010

Existem várias outras interfaces de extensibilidade definidos pelo Microsoft Office, como Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider, e Microsoft.Office.Core.SignatureProvider. Visual Studio não oferece suporte a implementar essas interfaces no suplemento criado usando os modelos de projeto do Office.

Usando Interfaces de extensibilidade

Para personalizar um recurso de interface do usuário usando uma interface de extensibilidade, implemente a interface adequada em seu projeto de suplemento. Em seguida, substituir o RequestService método para retornar uma instância da classe que implementa a interface.

Para um aplicativo de exemplo que demonstra como implementar a Microsoft.Office.Core.IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer, e Microsoft.Office.Interop.Outlook.FormRegionStartup interfaces em um suplemento para Outlook, consulte o exemplo de Gerenciador de interface do usuário no Amostras de desenvolvimento do Office.

Exemplo de implementação de uma Interface de extensibilidade

O exemplo de código a seguir demonstra uma implementação simples da Microsoft.Office.Core.ICustomTaskPaneConsumer interface para criar um painel de tarefas personalizado. Este exemplo define duas classes:

  • O TaskPaneHelper classe implementa Microsoft.Office.Core.ICustomTaskPaneConsumer para criar e exibir um painel de tarefas personalizado.

  • O TaskPaneUI classe fornece a interface do usuário do painel de tarefas. Os atributos para o TaskPaneUI classe tornar a classe visível para COM, que permite que aplicativos de Microsoft Office descobrir a classe. Neste exemplo, a interface do usuário é um vazio UserControl, mas você pode adicionar controles, modificando o código.

    ObservaçãoObservação

    Para expor o TaskPaneUI classe COM, você deve também definir o Register for COM Interop propriedade para o projeto. For more information, see Como: Registrar um componente para interoperabilidade 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 obter mais informações sobre como implementar Microsoft.Office.Core.ICustomTaskPaneConsumer, consulte Criação de painéis de tarefas personalizados no 2007 Office System na documentação do Microsoft Office.

Exemplo de substituindo o método RequestService

O exemplo de código a seguir demonstra como substituir o RequestService método para retornar uma instância da TaskPaneHelper classe a partir do exemplo de código anterior. Ele verifica o valor de serviceGuid parâmetro para determinar qual interface está sendo solicitada e, em seguida, retorna um objeto que implementa essa 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ém

Tarefas

Como: Criar projetos do Office em Visual Studio

Conceitos

Código de chamada no nível do aplicativo Add-ins de outras soluções do Office

Arquitetura dos suplementos de nível de aplicativo

Outros recursos

Exemplos de desenvolvimento do Office e Walkthroughs

Os suplementos de nível de aplicativo de programação.

Desenvolvimento de soluções do Office