![]() |
Nem todas as linguagens suportam o acesso às classes, métodos e propriedades das DLL’s criadas em .NET de uma forma “automática”, “nativa”. Muitas vezes temos a necessidade de disponibilizar estes acessos para linguagens que suportam o uso de ActiveX. (veja: http://pt.wikipedia.org/wiki/ActiveX)E isso é bem simples de se fazer em .NET. Vamos ver como. Iremos criar um novo projeto do tipo Class Library no Visual Studio eu dei o nome de ActiveX (criativo não?).
Iremos criar uma classe chamada de “MinhaClasse” (minha criatividade para nomes está a mil hoje).
Primeiro vamos ver o código de MinhaClasse
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace ActiveX { //define o tipo de interface da classe [ClassInterface(ClassInterfaceType.AutoDual)] //registra um identificador para a classe no registry [ProgId("ActiveX.MinhaClasse")] //faz com que todos os métodos e propriedades da classe sejam visíveis [ComVisible(true)] public class MinhaClasse { private string mPropriedade; public string MinhaPropriedade { get { return mPropriedade; } set { mPropriedade = value; } } public string MeuMetodo() { return "MeuMetodo"; } //este método eu não quero que seja visível. Então somente pra ele eu uso o comvisible = false [ComVisible(false)] //este método não ira aparecer no VB6 por ex. public string MeuMetodoOculto() { return "MeuMetodoOculto"; } } } Ok! Feito isso podemos compilar nossa classe, que não irá dar erro, mas também não vai funcionar, temos que marcar um checkBox mágico para que a DLL como um todo seja declarada como ActiveX.
Para isso vá em “Project” -> “Properties” -> Aba “Build” e marque a opção “Register for COM Interop”.
Veja na animação:
Feito isso, compilaremos novamente a nossa DLL. Mas também não iria funcionar só de compilar. 🙂
Como todo bom ActiveX que se preze temos que registrar.
Utilize a seguinte sintaxe:
para registrar : %windir%\Microsoft.NET\Framework\XXX\RegAsm.exe “Caminho Completo do ActiveX.dll” /tlb
Onde XXX é a versão do seu framework
Pronto, agora sim podemos usar a nossa DLL como um activeX, para isso vamos usar o VBScript para criarmos o objeto e um arquivo HTML com java script como exemplo.
VBScript
Dim activex set activex = CreateObject("ActiveX.MinhaClasse") MsgBox activex.MeuMetodo Agora em HTML com java script
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <script language="javascript" type="text/javascript"> function Load() { var activeX; activeX = new ActiveXObject("ActiveX.MinhaClasse"); alert (activeX.MeuMetodo()); } </script> <title>Testando ActiveX em .NET</title> </head> <body onload="Load();"> </body> </html> Este artigo foi apenas uma parte do que se é possível fazer, mas não podemos esquecer dos eventos e interfaces que nossas dlls podem ter.
Mas isso vai ficar para uma próxima vez. 🙂
|
É isso ai pessoal 🙂
Até o próximo
♦ Marcelo
Até o próximo
♦ Marcelo