Crear un DLL ActiveX para usar con ASP

Escrito por Mauro Rondinelli el Lunes 03 de Setiembre de 2001 a las 00:00hs

Veremos como crear componentes ActiveX personalizados, un ejemplo de componente ActiveX es por ejemplo CDONTS que lo utilizamos para enviar emails u otro mas comun es ADODB que lo utilizamos para el trabajo con bases de datos, de ahi sus siglas ADO (ActiveX Data Object) DB (Database).

Primero que nada tenemos que tener encuenta que no todos los servicios de hosting permiten el uso de componentes personalizados y algunos solo lo permiten dependiendo el plan que utilicemos, pero si solo queremos probarlos en nuestra PC con el IIS o el Personal Web Server no hay problema. 

Primer Paso 

El primer paso es crear el componente, para esto abrimos el Visual Basic 5/6 y seleccionamos crear un proyecto del tipo DLL ActiveX...

Una ves echo esto, debemos modificar el nombre del proyecto a ASPTest y el de la clase que nos aparece por defecto lo modificamos a Test, quedaria asi...

Tengan en cuenta estos cambios dado que si nos lo realizamos nuestro script ASP no funcionara, mas adelante les explicare en detalle la funcion de dichos nombres. Para terminar la configuracion de nuestro projecto falta indicarle que vamos a interactuar con una pagina ASP para ello tenemos que agregar la referencia desde el menu Proyecto > Referencias y seleccionamos "Microsoft Active Server Pages Object Library"...

Ahora guardamos todo y dentro de la clase Test agregamos el siguiente codigo...

Option Explicit

Private ScriptingContext As ScriptingContext
Private Application As Application
Private Request As Request
Private Response As Response
Private Server As Server
Private Session As Session

Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)
Set ScriptingContext = PassedScriptingContext
Set Application = ScriptingContext.Application
Set Request = ScriptingContext.Request
Set Response = ScriptingContext.Response
Set Server = ScriptingContext.Server
Set Session = ScriptingContext.Session
End Sub

Public Sub OnEndPage()
Set ScriptingContext = Nothing
Set Application = Nothing
Set Request = Nothing
Set Response = Nothing
Set Server = Nothing
Set Session = Nothing
End Sub

Public Sub Mensaje(Texto As String)
Response.Write "<b><font color='red'>" & Texto & "</font></b>"
End Sub

Explicado el codigo

Como vamos a interactuar con las paginas ASP debemos declarar las variables que nos permitan heredar todos los objetos de la pagina ASP ¿se entiende? por ejemplo heredamos el objeto Response el cual lo podemos utilizar desde Visual Basic como si fuese la pagina ASP en si mismo, es decir que si ponemos Response.Write("Hola") en Visual Basic eso saldra en la pagina ASP.

Despues nos encontramos con el procedimiento 'OnStartPage' que se ejecuta de forma automatica al llamar a nuestro componente desde la pagina ASP mediante Server.CreateObject, este procedimiento trae un parametro con todos los objetos de esa pagina ASP los cuales debemos asignarselos a las variables anteriormente declaradas. El procedimiento 'OnEndPage' se produce cuando descargamos nuestro componente desde la pagina ASP, lo mejor que podemos hacer aqui es limpiar todas los objetos, los dos procedimientos anteriores van a ser siempre igual.

Lo que sigue es nuestro procedimiento personalizado, en este caso va a mostrar un texto (en negrita y de color rojo) que se le pasara como parametro (Texto) ¿ok? . Bueno guardamos todo y lo compilamos a DLL.

La pagina ASP

La pagina ASP que llama a este componente personalizado no es muy diferente a las que siempre hacemos...

<html>
<body>
<%
Dim Test

Set Test = Server.CreateObject("ASPTest.Test")

Test.Mensaje "Hola, esta es una prueba."

Set Test = Nothing

%>
</body>
</html>

La linea 'Set Test = Server......' lo que hace es crear el componente personalizado, primero se pone el nombre del proyecto "ASPTest" y luego la clase a la cual queremos tener acceso en este caso "Test", luego utilizamos el unico metodo de esta clase que es Mensaje seguido de un texto entre comillas, por ultimo liberamos el objeto.

La ejecucion de la pagina ASP nos dara como resultado el texto "Hola, esta es una prueba."

Conclusion

Este componente es muy basico, la verdad casi inservible, pero en base a esto podemos crear componentes mas complejos que nos facilitaran la programacion de las paginas ASP o hasta si el componente creado es muy bueno podemos comercializarlo dado que es una tecnologia bastante extendida y utilizada.

Bajate el codigo.


comentarios



  1. Donde se guarda la DLL para poder ser vista por el asp



  2. respondiendo a Enrique Davila.
    la dll creada debe ser registrada en el PC donde se encuentra nuestra pagina asp.
    el lugar fisico puede ser donde tu quieras.
    y para registrarlo debes escribir esto en INICIO->Ejecutar...
    regsvr32 RUTAarchivo.dll
    ejemplo
    regsvr32 C:midllASPTest.dll

    para desregistrarla solo pon /u asi:
    regsvr32 /u C:midllASPTest.dll

    NOTA:
    al querer modificarla
    debes deregistrar la DLL y
    reiniciar tu servicio de "Publicación en World Wide Web" esto en panel de control, herramientas administrativas->Servicios.
    selecciona "Publicación en World Wide Web" y dale click al enlase reiniciar.

    asi nos aseguramos de que la DLL no se este ocupando y podremos crearla nuevamente (con los cambios que le hayas echo) y podras registrarla nuevamente.



  3. Se pueden usar estas DLLs en ASP usando jscript servidor???

    saludos,

    kenavik



  4. Hola mui buenas, esta bueno !! pero seria posible, crear un ActiveX, para copiar unos archivos a la makina cliente, i asi poder utilizarlos cada vez q interactuen en mi pagina !! ia q son necesarios para poder visualizar unos XML en forma gráfica !!! realmente soi nuevo en los ActiveX !!!



    Saludos !! i espero encontrar por lo menos una respuesta !!!
    gracias



  5. Es muy interesante este ejemplo creo que habre nuevas formas de realizar una programación más y asegurar su código fuentes



  6. Hola soy Jairo y trabajo en una empresa textil y necesito q me ayuden por favor. Bueno lo q necesito saber es como implementar el lector de codigo de barra en el sistema que estoy haciendo quisiera saber la codificacion para poder capturar el codigo de barra de cada prenda y introducirlo en TextBox.

    Agradeceria que me enviaran el codigo



  7. Objeto Server, ASP 0177 (0x800401F3)
    Cadena clase no válida
    /test.asp, línea 9

    baje el codigo que publicaron pero no me funciona, me marca ese ue puede ser



  8. Amigos, todavia me marca el error,no le hise ningun cambio al archivo que descarge, pero no me funciona todavia marca el error.

    Les comento un Poco:
    1. trabajo con ajax y asp, pero nunca con dll, tengo una Pagina asp que se encarga de tener todas las consultas de las demas Paginas, esta pagina maestra la acceso desde las otras con ajax y ejecuta ya se aguardar,eliminar, refrescar etc.

    2.- quiero esa pagina poder de alguna forma proteger el codigo, por eso me gusto la forma de dll, asi no podrian copiar mis ideas

    3.- tengo que entregar al cliente el sistema,este correra en una intranet, y se va a quedar con los fuentes, inclusive lo puede Vender a otra Persona, ya que no encuentro forma de crear un Instalador que no permita correr la aplicación en otra maquina sin haber registrado el producto.

    ese es mi problema, tienen alguna idea de como prtegher nuestro Trabajo.


    Tipo de error:
    Objeto Server, ASP 0177 (0x800401F3)
    Cadena clase no válida
    /test.asp, línea 9

agregar comentario


Se permiten las etiquetas HTML <b>, <i> y <p>. Si ingresa alguna dirección web o dirección de email serán convertidos en enlaces automáticamente.





publicidad