Instruções passo a passo: criando objetos COM com o Visual BasicWalkthrough: Creating COM Objects with Visual Basic

Ao criar novos aplicativos ou componentes, é melhor criar assemblies de .NET Framework.When creating new applications or components, it is best to create .NET Framework assemblies. No entanto, Visual Basic também facilita a exposição de um componente de .NET Framework para COM.However, Visual Basic also makes it easy to expose a .NET Framework component to COM. Isso permite que você forneça novos componentes para conjuntos de aplicativos anteriores que exigem componentes COM.This enables you to provide new components for earlier application suites that require COM components. Este tutorial demonstra como usar Visual Basic para expor .NET Framework objetos como objetos COM, com e sem o modelo de classe COM.This walkthrough demonstrates how to use Visual Basic to expose .NET Framework objects as COM objects, both with and without the COM class template.

A maneira mais fácil de expor objetos COM é usando o modelo de classe COM.The easiest way to expose COM objects is by using the COM class template. Esse modelo cria uma nova classe e, em seguida, configura seu projeto para gerar a classe com uma camada de interoperabilidade como um objeto COM e registrá-la no sistema operacional.This template creates a new class, then configures your project to generate the class with an interoperability layer as a COM object, and register it with the operating system.

Observação

Embora você também possa expor uma classe criada em Visual Basic como um objeto COM para que o código não gerenciado use, ele não é um objeto COM verdadeiro e não pode ser usado por Visual Basic.Although you can also expose a class created in Visual Basic as a COM object for unmanaged code to use, it is not a true COM object and cannot be used by Visual Basic. Para obter mais informações, consulte interoperabilidade com em aplicativos .NET Framework.For more information, see COM Interoperability in .NET Framework Applications.

Observação

Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos.The Visual Studio edition that you have and the settings that you use determine these elements. Para obter mais informações, consulte Personalizando o IDE.For more information, see Personalizing the IDE.

Para criar um objeto COM usando o modelo de classe COMTo create a COM object by using the COM class template

  1. Abra um novo projeto de aplicativo do Windows no menu arquivo clicando em novo projeto.Open a new Windows Application project from the File menu by clicking New Project.

  2. Na caixa de diálogo novo projeto , no campo tipos de projeto , verifique se Windows está selecionado.In the New Project dialog box under the Project Types field, check that Windows is selected. Selecione biblioteca de classes na lista modelos e clique em OK.Select Class Library from the Templates list, and then click OK. O novo projeto é exibido.The new project is displayed.

  3. Selecione Adicionar novo item no menu projeto .Select Add New Item from the Project menu. A caixa de diálogo Adicionar novo item é exibida.The Add New Item dialog box is displayed.

  4. Selecione a classe com na lista modelos e clique em Adicionar.Select COM Class from the Templates list, and then click Add. Visual Basic adiciona uma nova classe e configura o novo projeto para interoperabilidade COM.Visual Basic adds a new class and configures the new project for COM interop.

  5. Adicione um código como propriedades, métodos e eventos à classe COM.Add code such as properties, methods, and events to the COM class.

  6. Selecione criar ClassLibrary1 no menu Compilar .Select Build ClassLibrary1 from the Build menu. Visual Basic compila o assembly e registra o objeto com com o sistema operacional.Visual Basic builds the assembly and registers the COM object with the operating system.

Criando objetos COM sem o modelo de classe COMCreating COM Objects without the COM Class Template

Você também pode criar uma classe COM manualmente em vez de usar o modelo de classe COM.You can also create a COM class manually instead of using the COM class template. Esse procedimento é útil quando você está trabalhando na linha de comando ou quando deseja obter mais controle sobre como os objetos COM são definidos.This procedure is helpful when you are working from the command line or when you want more control over how COM objects are defined.

Para configurar seu projeto para gerar um objeto COMTo set up your project to generate a COM object

  1. Abra um novo projeto de aplicativo do Windows no menu arquivo clicando em NewProject.Open a new Windows Application project from the File menu by clicking NewProject.

  2. Na caixa de diálogo novo projeto , no campo tipos de projeto , verifique se Windows está selecionado.In the New Project dialog box under the Project Types field, check that Windows is selected. Selecione biblioteca de classes na lista modelos e clique em OK.Select Class Library from the Templates list, and then click OK. O novo projeto é exibido.The new project is displayed.

  3. No Gerenciador de Soluções, clique com o botão direito do mouse no nó do seu projeto e clique em Propriedades.In Solution Explorer, right-click your project, and then click Properties. O Designer de projeto é exibido.The Project Designer is displayed.

  4. Clique na guia Compilar.Click the Compile tab.

  5. Marque a caixa de seleção registrar para interoperabilidade com .Select the Register for COM Interop check box.

Para configurar o código em sua classe para criar um objeto COMTo set up the code in your class to create a COM object

  1. Em Gerenciador de soluções, clique duas vezes em Class1. vb para exibir seu código.In Solution Explorer, double-click Class1.vb to display its code.

  2. Renomeie a classe para ComClass1.Rename the class to ComClass1.

  3. Adicione as constantes a seguir a ComClass1 .Add the following constants to ComClass1. Eles armazenarão as constantes GUID (identificador global exclusivo) que os objetos COM devem ter.They will store the Globally Unique Identifier (GUID) constants that the COM objects are required to have.

    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
  4. No menu Ferramentas, clique em Criar GUID.On the Tools menu, click Create Guid. Na caixa de diálogo Criar GUID, clique em Formato do Registro e clique em Copiar.In the Create GUID dialog box, click Registry Format and then click Copy. Clique em Sair.Click Exit.

  5. Substitua a cadeia de caracteres vazia do ClassId pelo GUID, removendo as chaves à esquerda e à direita.Replace the empty string for the ClassId with the GUID, removing the leading and trailing braces. Por exemplo, se o GUID fornecido pelo Guidgen for "{2C8B0AEE-02C9-486e-B809-C780A11530FE}" , seu código deverá aparecer da seguinte maneira.For example, if the GUID provided by Guidgen is "{2C8B0AEE-02C9-486e-B809-C780A11530FE}" then your code should appear as follows.

    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
  6. Repita as etapas anteriores para as InterfaceId EventsId constantes e, como no exemplo a seguir.Repeat the previous steps for the InterfaceId and EventsId constants, as in the following example.

    Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91"
    Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
    

    Observação

    Certifique-se de que os GUIDs são novos e exclusivos; caso contrário, o componente COM pode entrar em conflito com outros componentes COM.Make sure that the GUIDs are new and unique; otherwise, your COM component could conflict with other COM components.

  7. Adicione o ComClass atributo a ComClass1 , ESPECIFICANDO os GUIDs para a ID de classe, ID de interface e ID de eventos, como no exemplo a seguir:Add the ComClass attribute to ComClass1, specifying the GUIDs for the Class ID, Interface ID, and Events ID as in the following example:

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)>
    Public Class ComClass1
    
  8. As classes COM devem ter um construtor sem parâmetros Public Sub New() ou a classe não será registrada corretamente.COM classes must have a parameterless Public Sub New() constructor, or the class will not register correctly. Adicione um construtor sem parâmetros à classe:Add a parameterless constructor to the class:

    Public Sub New()
        MyBase.New()
    End Sub
    
  9. Adicione Propriedades, métodos e eventos à classe, encerrando-o com uma End Class instrução.Add properties, methods, and events to the class, ending it with an End Class statement. Selecione Compilar solução no menu Compilar .Select Build Solution from the Build menu. Visual Basic compila o assembly e registra o objeto com com o sistema operacional.Visual Basic builds the assembly and registers the COM object with the operating system.

    Observação

    Os objetos COM que você gera com Visual Basic não podem ser usados por outros aplicativos Visual Basic porque não são objetos COM verdadeiros.The COM objects you generate with Visual Basic cannot be used by other Visual Basic applications because they are not true COM objects. As tentativas de adicionar referências a esses objetos COM gerarão um erro.Attempts to add references to such COM objects will raise an error. Para obter detalhes, consulte interoperabilidade com em aplicativos .NET Framework.For details, see COM Interoperability in .NET Framework Applications.

Consulte tambémSee also