Criando e instanciando assemblies .NET utilizando o driver VBScript.

1) Introdução
A partir da versão 1.0, o driver VBScript possui uma função global chamada CreateDotNetObject que permite instanciar um tipo de dado que esteja definido em um assembly .NET.
Inicialmente,  este artigo mostrará como criar e configurar uma Class Library (DLL) utilizando o Microsoft Visual C# 2008. Após, será apresentado um exemplo de como instanciar esta classe no E3 e chamar seus métodos através de um script escrito no driver.
Importante: É necessário possuir o .NET Framework Redistributable Package instalado no computador que irá rodar o script. Lembrando que o driver VBScript requer .NET Framework 2.0 ou superior para utilização da função CreateDotNetObject.

2) Criando o assembly .NET no Microsoft Visual C# 2008

No Microsoft Visual C# 2008, acesse o menu File >> New >> Project. O projeto a ser criado nesse exemplo é do tipo Class Library. Digite o nome do projeto, escolha o diretório e clique em OK (Figura 1).

Figura 1. Criando um novo projeto do tipo Class Library

Para que um assembly .NET seja compatível com o driver VBScript, é necessário que ele esteja com a visibilidade COM habilitada. Para fazer isso, basta acessar as propriedades do projeto, clicar no botão Assembly Information… e marcar a opção Make assembly COM-Visible (Figura 2).

Figura 2. Configurações do assembly

 

O projeto irá gerar automaticamente um arquivo Class1.cs com uma classe chamada Class1 já criada dentro do namespace TestAssembly. Nesse exemplo, será criado apenas um método que abre uma caixa de mensagem ao ser chamado.

O método MessageBox.Show será usado para mostrar a caixa de mensagem, assim, é necessário adicionar uma referência do Windows Forms ao projeto. No menu Project, clique em Add Reference, selecione o componente System.Windows.Forms e clique em OK.

O próximo passo é adicionar um novo método à classe. O método se chamará ShowMessage (sem nenhum parâmetro ou retorno) e irá criar uma MessageBox com a frase “Hello World!”.

namespace TestAssembly
{
  public class Class1
  {
    public void ShowMessage()
    {
      System.Windows.Forms.MessageBox.Show(“Hello World!”);
    }
  }
}

3) Instanciando o objeto e chamando métodos através do script do driver

Com o arquivo DLL compilado, já é possível instanciar um objeto da classe Class1 via script. Adicione o driver VBScript ao projeto do E3 e acesse suas propriedades. Na aba VBScript, escreva o script para criar uma instância da classe Class1 e chamar o método ShowMessage ao iniciar o driver.

Figura 3. Configurações do driver VBScript

 

Dim obj
Sub OnStart()
  Set obj = CreateDotNetObject(“C:\TestAssembly.dll”, “TestAssembly.Class1”)
  obj.ShowMessage()
End Sub
Sub OnStop()
 Set obj = Nothing
End Sub

Após adicionar o script na área correspondente, clique em OK. Dentro da janela de design do driver, clique no botão Ativar/desativar comunicação. Se tudo estiver correto, a caixa de mensagem com o texto “Hello World!” deverá ser exibida ao ativar o driver (Figura 4).
Figura 4. Caixa de mensagem exibida pelo método ShowMessage

 

Na função CreateDotNetObject, o primeiro parâmetro corresponde ao nome e ao caminho do arquivo que contém o assembly que define o tipo do dado (nesse caso, é o arquivo TestAssembly.dll). O segundo parâmetro corresponde ao nome do tipo de dado, incluindo o namespace (nesse exemplo, a classe Class1, que faz parte do namespace TestAssembly).

Após o objeto ser criado pelo retorno da função, é possível chamar o método ShowMessage.
Para mais informações sobre o funcionamento do driver e das funções disponíveis, consulte sua documentação.

4) Conclusão

Esta foi uma demonstração bem simples de como uma classe implementada em C# (utilizando o .NET Framework) pode ser instanciada no E3 através do driver VBScript.

Porém, é preciso ressaltar que esse recurso permite que o usuário desenvolva suas próprias classes de forma muito mais complexa aproveitando os recursos que o Framework oferece, e é aplicável, principalmente, a casos onde não seja possível realizar uma tarefa específica diretamente no E3.

Anexos:

TestAssembly

Projeto1

Este artigo foi útil? Was this post helpful?
Yes0
No0

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *