Como criar um suplemento COM do Office usando o Visual translation from VPE for Csharp .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 302901 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Microsoft Office XP, Microsoft Office 2003 e Microsoft Office 2007 oferecem suporte a uma arquitetura de design uniforme para a criação de suplementos de aplicativo para aprimorar e para controlar aplicativos do Office. Esses suplementos são chamados COM (Component Object Model) add-ins. Este artigo passo a passo discute suplementos de COM do Office e descreve como criar um suplemento COM do Office usando o Microsoft Visual translation from VPE for Csharp. NET.

A interface IDTExensibility2

Um suplemento é um servidor COM em processo, ou biblioteca de vínculo dinâmico ActiveX (DLL), que implementa a interface IDTExensibility2 conforme descrito na biblioteca de tipos suplemento Microsoft Designer (Msaddndr.dll). Todos os suplementos herdam essa interface e devem implementar cada um dos seus cinco métodos.

OnConnection

O evento OnConnection é acionado sempre que o suplemento está conectado. O add-in o pode estar conectado na inicialização, pelo usuário final, ou através de automação. Se o evento OnConnection retorna com êxito, o add-in é considerado ser carregado. Se uma mensagem de erro for retornada, o aplicativo host imediatamente libera sua referência para o suplemento e o objeto é destruído.

O evento OnConnection leva os quatro parâmetros a seguir:
  • aplicativo : uma referência a objeto do aplicativo host.
  • ConnectMode : uma constante que especifica como o add-in está conectado. O add-in pode ser conectado das seguintes maneiras:
    • ext_cm_AfterStartup : O suplemento é iniciado pelo usuário final na caixa de diálogo suplementos .
    • ext_cm_CommandLine : O add-in está conectado a partir da linha de comando. Observe que isso não se aplica à criação de suplementos de COM para aplicativos do Office.
    • ext_cm_External : O suplemento é conectado por um aplicativo externo através da automação. Observe que isso não se aplica à criação de suplementos de COM para o Office aplicativos.
    • ext_cm_Startup : O suplemento é iniciado por host na inicialização do aplicativo. Esse comportamento é controlado por uma configuração no registro.
  • AddInInst : uma referência ao objeto COMAddIn que se refere a esse suplemento da coleção COMAddIns para o aplicativo host.
  • personalizada : uma matriz de valores de tipo Variant que pode conter dados definidos pelo usuário.

OnDisconnection

O evento OnDisconnection é acionado quando o suplemento está desconectado e apenas antes que ele descarrega da memória. O add-in deve executar qualquer limpeza de recursos nesse evento e restaurar as alterações feitas ao aplicativo host.

O evento OnDisconnection leva dois parâmetros a seguir:
  • RemoveMode : uma constante que especifica como o suplemento foi desconectado. O add-in possa ser desconectado das seguintes maneiras:
    • ext_dm_HostShutdown : O suplemento será desconectado quando o aplicativo host é fechado.
    • ext_dm_UserClosed : O suplemento é desconectado pelo usuário final ou uma automação controlador.
  • personalizada : uma matriz de valores de tipo Variant que pode conter dados definidos pelo usuário.

OnAddInsUpdate

O evento OnAddInsUpdate é acionado quando o conjunto de registrados COM as alterações de add-ins. Em outras palavras, sempre que um suplemento está instalado ou removido o aplicativo host, este evento é acionado.

OnStartupComplete e OnBeginShutdown

Tanto o método OnStartupComplete e o método OnBeginShutdown são chamados quando o aplicativo host deixou ou é inserir um estado no qual o usuário interação deve ser evitada porque o aplicativo está ocupado carregando ou descarregando próprio da memória. O método OnStartupComplete é chamado somente se o suplemento foi conectado durante a inicialização e o método OnBeginShutdown é chamado somente se o host desconecta o add-in durante o desligamento.

Como a interface do usuário para o aplicativo host é totalmente ativa quando esses eventos acionados, eles podem ser a única maneira executar determinadas ações caso contrário, seria não está disponíveis de evento OnConnection e o evento OnDisconnection .

Registro do suplemento COM

Em além para registro COM normal, um suplemento precisa se registrar com cada aplicativo do Office no qual ele é executado. Para se registrar com um determinado aplicativo, o suplemento deve criar uma subchave, usando o ProgID como o nome para a chave, no seguinte local:
HKEY_CURRENT_USER\Software\Microsoft\Office\<OfficeApp>\Addins\<ProgID>
O add-in pode fornecer valores neste local chave para um nome para exibição amigável e uma descrição completa. Além disso, o suplemento deve especificar seu comportamento de carga desejada usando um valor DWORD chamado LoadBehavior. Esse valor determina como o suplemento é carregado pelo aplicativo host e é composto de uma combinação dos seguintes valores:
  • 0 = Desconectar - Não É carregado.
  • 1 = Conectado - É carregado.
  • 2 = Bootload - carregar na inicialização do aplicativo.
  • 8 = DemandLoad - carga somente quando solicitado pelo usuário.
  • 16 = ConnectFirstTime - carregar apenas uma vez (na próxima inicialização).
O valor típico especificado é 0 x 03 (conectado | Bootload).

Suplementos que implementam IDTExtensibility2 também devem especificar um valor DWORD chamado
CommandLineSafe
para indicar se os suplementos são seguros para operações que não oferecem suporte a uma interface de usuário. Um valor de 0 x 00 indica False e um valor de 0 x 01 indica True.

Como criar um suplemento de COM usando o Visual translation from VPE for Csharp .NET

Como mencionado anteriormente, um suplemento COM do Office é um processo in COM servidor é ativado por um aplicativo do Office por meio da camada de tempo de execução COM. Portanto, desenvolver um suplemento COM no .NET requer que o componente add-in ser implementado em .NET e, em seguida, exposto a clientes COM (ou seja, os aplicativos do Office) por meio de camada de interoperabilidade COM.

Para criar um suplemento de COM no Visual translation from VPE for Csharp. NET, execute essas etapas:
  1. No Visual translation from VPE for Csharp. NET, crie uma biblioteca de classes projeto.
  2. Adicione uma referência à biblioteca de tipos que implementa IDTExtensibility2 . O assembly de interoperabilidade primária para isso já está disponível sob o nome extensibilidade .
  3. Adicione uma referência à biblioteca de objeto do Microsoft Office. O assembly de interoperabilidade primária para isso já está disponível sob o nome do Office .
  4. Crie uma classe pública na biblioteca de classe que implementa IDTExtensibility2 .
  5. Após a classe de biblioteca é criada, registrar a biblioteca for COM interop. Para fazer isso, gerar um forte chamado assembly para esta biblioteca de classes e registrá-lo com a interoperabilidade COM. Você pode usar regasm.exe para registrar um componente .NET para COM interop.
  6. Crie entradas do Registro para que aplicativos do Office podem reconhecer e carregar o add-in.
Você pode optar por concluir todas essas etapas, ou você pode criar um projeto .NET do tipo Shared Addin . Isso inicia o Assistente extensibilidade, que ajuda a criar um suplemento no. NET.

O Assistente de extensibilidade cria um Visual translation from VPE for Csharp projeto de biblioteca de classe .NET along with uma classe de conectar-se que implementa a interface IDTExtensibility2 . O código estrutural que implementa os membros vazios do IDTExtensibility também é gerado. Este projeto possui referências a assemblies de extensibilidade e Office. As configurações de compilação do projeto tem Register for COM Interop selecionado. O arquivo de chave (.snk) do assembly é gerado e referenciado no atributo AssemblyKeyfile em Assemblyinfo.vb.

Along with projeto de biblioteca de classe, o assistente gera um projeto de instalação que você pode usar para implantar o add-in COM em outros computadores. Você pode remover esse projeto se desejado.

Exemplo passo a passo

  1. No menu arquivo no Microsoft Visual Studio. NET, clique em novo e, em seguida, clique em Project .
  2. Na caixa de diálogo New Project , expanda Outros projetos em Project Types , selecione Projetos de extensibilidade e, em seguida, selecione o modelo Shared Add-in .
  3. Digite MyCOMAddin como o nome do suplemento e clique em OK .
  4. Quando o Assistente de extensibilidade for exibida, siga estas etapas:
    1. Na página 1, selecione Create an Add-in usando translation from VPE for Csharp Visual e, em seguida, clique em Avançar .
    2. Na página 2, selecione os seguintes aplicativos host e, em seguida, clique em Avançar :
      • Microsoft Word
      • Microsoft PowerPoint
      • Microsoft Outlook
      • Microsoft Excel
      • Microsoft Access
    3. Na página 3, forneça um nome e descrição para o suplemento e, em seguida, clique em Avançar .

      Observação O nome e a descrição do add-in aparecem na caixa de diálogo suplemento de com no aplicativo do Office.

    4. Na página 4, selecione todas as opções disponíveis e, em seguida, clique em Avançar .
    5. Clique em Concluir .
  5. No menu Project , clique em Add Reference . Clique em System.Windows.Forms.dll na lista de componentes, clique em Selecionar e, em seguida, clique em OK .
  6. Adicione o seguinte lista de espaços para nome na classe conectar :
    using System.Reflection;
  7. Adicionar o membro seguir à classe Connect :
    private CommandBarButton MyButton; 
  8. Implementar o código para os membros de IDTExtensibility2 na classe conectar , da seguinte maneira:
    public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom) {
       applicationObject = application;
       addInInstance = addInInst;
    
       if(connectMode != Extensibility.ext_ConnectMode.ext_cm_Startup)
       {
          OnStartupComplete(ref custom);
       }
    
    }
    
    public void OnDisconnection(Extensibility.ext_DisconnectMode disconnectMode, ref System.Array custom) {
       if(disconnectMode != Extensibility.ext_DisconnectMode.ext_dm_HostShutdown)
       {
          OnBeginShutdown(ref custom);
       }
       applicationObject = null;
    }
    
    
    public void OnAddInsUpdate(ref System.Array custom)
    {
    }
    
    public void OnStartupComplete(ref System.Array custom)
    {
       CommandBars oCommandBars;
       CommandBar oStandardBar;
    
       try
       {
       oCommandBars = (CommandBars)applicationObject.GetType().InvokeMember("CommandBars", BindingFlags.GetProperty , null, applicationObject ,null);
       }
       catch(Exception)
       {
       // Outlook has the CommandBars collection on the Explorer object.
       object oActiveExplorer;
       oActiveExplorer= applicationObject.GetType().InvokeMember("ActiveExplorer",BindingFlags.GetProperty,null,applicationObject,null);
       oCommandBars= (CommandBars)oActiveExplorer.GetType().InvokeMember("CommandBars",BindingFlags.GetProperty,null,oActiveExplorer,null);
       }
    
       // Set up a custom button on the "Standard" commandbar.
       try
       {
       oStandardBar = oCommandBars["Standard"];        
       }
       catch(Exception)
       {
       // Access names its main toolbar Database.
       oStandardBar = oCommandBars["Database"];      
       }
    
       // In case the button was not deleted, use the exiting one.
       try
       {
       MyButton = (CommandBarButton)oStandardBar.Controls["My Custom Button"];
       }
       catch(Exception)
       {
          object omissing = System.Reflection.Missing.Value ;
          MyButton = (CommandBarButton) oStandardBar.Controls.Add(1, omissing , omissing , omissing , omissing);
          MyButton.Caption = "My Custom Button";
          MyButton.Style = MsoButtonStyle.msoButtonCaption;
       }
    
       // The following items are optional, but recommended. 
       //The Tag property lets you quickly find the control 
       //and helps MSO keep track of it when more than
       //one application window is visible. The property is required
       //by some Office applications and should be provided.
       MyButton.Tag = "My Custom Button";
    
       // The OnAction property is optional but recommended. 
       //It should be set to the ProgID of the add-in, so that if
       //the add-in is not loaded when a user presses the button,
       //MSO loads the add-in automatically and then raises
       //the Click event for the add-in to handle. 
       MyButton.OnAction = "!<MyCOMAddin.Connect>";
    
       MyButton.Visible = true;
       MyButton.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(this.MyButton_Click);
    
    
       object oName = applicationObject.GetType().InvokeMember("Name",BindingFlags.GetProperty,null,applicationObject,null);
    
       // Display a simple message to show which application you started in.
       System.Windows.Forms.MessageBox.Show("This Addin is loaded by " + oName.ToString()   , "MyCOMAddin");
       oStandardBar = null;
       oCommandBars = null;
    }
    
    public void OnBeginShutdown(ref System.Array custom)
    {
       object omissing = System.Reflection.Missing.Value ;
       System.Windows.Forms.MessageBox.Show("MyCOMAddin Add-in is unloading.");
       MyButton.Delete(omissing);
       MyButton = null;
    }
    
    private void MyButton_Click(CommandBarButton cmdBarbutton,ref bool cancel) {
       System.Windows.Forms.MessageBox.Show("MyButton was Clicked","MyCOMAddin"); }
    					
  9. Criar e testar o suplemento. Para fazer isso, execute as seguintes etapas:
    1. No menu Build , clique em Build Solution . Observe que criar o suplemento registra a classe do .NET com a interoperabilidade COM.
    2. Inicie um dos aplicativos do Office que você selecionou como aplicativos de host para seu suplemento (por exemplo, Microsoft Word ou Microsoft Excel).
    3. Depois que o suplemento tiver iniciado, OnStartupComplete evento do add-in é acionado e recebe uma mensagem. Descartar a caixa de mensagem. Observação que o suplemento adicionado um novo botão personalizado com a legenda "Meu botão personalizado" barra de ferramentas padrão.
    4. Clique em Meu botão personalizado . O evento Click do botão é tratado pelo add-in e você recebe uma caixa de mensagem. Descartar a caixa de mensagem.
    5. Feche o aplicativo do Office.
    6. Quando você sai do aplicativo, OnBeginShutDown evento é acionado e você recebe uma mensagem. Fechar a caixa de mensagem para finalizar a demonstração.

Referências

Para obter informações adicionais sobre escrever suplementos de COM, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
190253INFO: Designers VB6 não funcionam em VB5

Propriedades

ID do artigo: 302901 - Última revisão: sexta-feira, 11 de maio de 2007 - Revisão: 10.2
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
Palavras-chave: 
kbmt kbautomation kbhowtomaster KB302901 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 302901

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com