Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Crear un DLL para incluirlo en Codigo ASP

Estas en el tema de Crear un DLL para incluirlo en Codigo ASP en el foro de Visual Basic clásico en Foros del Web. amigos, tengo una pequeña prerrogativa... hace mucho tiempo que no utilizo VS, y por ende no recuerdo como crear un DLL, se podria decir que ...
  #1 (permalink)  
Antiguo 23/01/2008, 13:27
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 8 meses
Puntos: 88
Pregunta Crear un DLL para incluirlo en Codigo ASP

amigos, tengo una pequeña prerrogativa...

hace mucho tiempo que no utilizo VS, y por ende no recuerdo como crear un DLL, se podria decir que estoy fuera de contexto/practica

algun ejemplo de una funcion sencilla o basica??

solo como referencia o si tienen enlace o POST de referencia de aqui del foro, se los agradeceria

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #2 (permalink)  
Antiguo 23/01/2008, 16:49
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 8 meses
Puntos: 88
Re: Crear un DLL para incluirlo en Codigo ASP

sera algo asi???

Abrimos un proyecto nuevo, seleccionamos un "EXE ActiveX"
en la pantalla podemos utilizar algo similar a esto como contenido de prueba
Código:
'------------------------------------------------------------------------------
Option Explicit

Public Function Saludo() As String
    Saludo = "Hola desde la DLL Prueba"
End Function

Public Function Suma(ByVal n1 As Double, ByVal n2 As Double) As Double
    Suma = n1 + n2
End Function
bien, eso seria un contenido simple

En el explorador de objetos(normalmente en la parte derecha superior, si es que no hemos movido nuestra forma visual), hay que recordar cambiar los nombres predeterminados tanto del proyecto como de la clase que se anexa automaticamente

esto debido a que en el uso, no recordamos (que se llaman "proyecto1" y "Class1") los nombres que tendra nuestro modulo...

Ahora, ya una ves que nosotros guardamos el proyecto y renombrado la clase, podemos proceder a generar nuestra DLL, para esto:
Cita:
Menu Archivo
"Generar Proyecto1.Dll" <---- cambiara dependiendo del nombre de su proyecto
despues les pregunta, en que directorio desean guardarlo, una ves seleccionado todo listo....

Siguiente paso, una ves terminada la compilacion de nuestro DLL, procederemos a realizar la copia a nuestro directorio WEB, y tambien al registro de la misma de la siguiente forma:

Cita:
Regsvr32 [/u] [/s] <nombre del fichero>
Por ejemplo:
REGSVR32 c:\windows\system\Dao350.dll
Los parámetros opcionales [/u] [/s] significan lo siguiente:
[/u] - lo utilizamos cuando queremos "desregistrar" una DLL (o un .ocx en vez de registrarlo).
[/s] - modo "silencioso" - no despliega los mensajes durante la operación.
ya realizado este segundo procedimiento, las pruebas de uso


Describamos como llamaremos los procedimientos

primero:
creamos el objeto que contendra la clase
Cita:
set Funciones = server.CreateObject("Proyecto.clase")
Funciones <-- variable que contendra las funciones
proyecto <---nombre que le dieron a su proyecto
clase <-- La Clase que deseas usar

segundo: parametrizacion del entorno
segun el ejemplo arriba escrito debemos enviar 2 variables, para realizar la operacion de suma, he aqui un ejemplo

Cita:
A=5
B=10
resultado = Funciones.Suma(A, B)
response.Write "Suma: " & resultado
esto resulta interesante una ves que recuerdas como se utilizan tus programas.....

bueno solo fue una simple guia, despues anexare un DLL de encriptacion sencilla nada fuera de otro mundo, pero de algo nos ha de servir

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra

Última edición por Shiryu_Libra; 24/01/2008 a las 11:33 Razón: edicion de esta parte: resultado = Funciones.Suma(A, B) As Double no lleva lo ultimo
  #3 (permalink)  
Antiguo 21/05/2008, 14:39
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 8 meses
Puntos: 88
Respuesta: Crear un DLL para incluirlo en Codigo ASP

Aqui de nuevo

Hace tiempo que mencione que dejaria algo para encriptacion, y para no dejar la palabra empeñada, muestro este pequeño codigo, espero que les sirva

ok, aki vamos :

abriremos un nuevo proyecto, el cual sera un EXE ActiveX como en nuestro ejemplo anterior.

ya una ves iniciado el espacio de trabajo, cambiaremos el nombre de nuestra clase, dejandolo en "ClsEncrypt"

ahora el codigo:
Código HTML:
'Set Encripta = New cEncrypt
'sResultado = Encripta.ConvertirClave(CadenaxDesencriptar, sClave, False)
'False=desencriptar, True =Encriptar
Option Explicit

Public Enum eEncrypt
    eDesencriptar = 0
    eEncriptar = 1
End Enum

Private m_Accion As eEncrypt

' Variable privadas para las propiedades
Private m_sOriginal As String
Private m_sClave As String
Private Const mc_sClave As String = "123456"

' Si se debe devolver error al fallar en la asignación
' por defecto es True
Private m_RaiseError As Boolean

'----------------------------------------
' Clase Inicalizar, RECORDAR MODIFICAR EL VALOR POR DEFECTO
' DE LA CLAVE
'----------------------------------------
Private Sub Class_Initialize()
    ' Por defecto devolver error
    m_RaiseError = True
    ' Clave por defecto
    m_sClave = "Pruebas"
    ' Por defecto se encriptará
    m_Accion = eEncriptar
End Sub


Public Function ConvertirClave(Optional ByVal sOriginal As String = "", _
                                 Optional ByVal sClave As String = "", _
                                 Optional vAccion As Variant) As String
    Dim LenOri As Long
    Dim LenClave As Long
    Dim i As Long, j As Long
    Dim cO As Long, cC As Long
    Dim k As Long
    Dim v As String
   
    ' Si no se especifican los parámetros,
    ' se usarán los valores de las propiedades
    If Len(sOriginal) = 0 Then _
        sOriginal = m_sOriginal
       
    If Len(sClave) = 0 Then _
        sClave = m_sClave
   
    ' Si se especifica el último parámetro,
    If Not IsMissing(vAccion) Then
        ' usar nuestra propiedad para convertir el valor
        Me.Accion = vAccion
    End If
   
    LenOri = Len(sOriginal)
    LenClave = Len(sClave)
   
    v = Space$(LenOri)
    i = 0&
    For j = 1 To LenOri
        i = i + 1
        If i > LenClave Then
             i = 1
        End If
        cO = Asc(Mid$(sOriginal, j, 1))
        cC = Asc(Mid$(sClave, i, 1))
        If m_Accion Then
             k = cO + cC
             If k > 255 Then
                 k = k - 255
             End If
        Else
             k = cO - cC
             If k < 0 Then
                 k = k + 255
             End If
        End If
        Mid$(v, j, 1) = Chr$(k)
    Next
   
    ConvertirClave = v
End Function

Public Function DesEncriptar(Optional ByVal sOriginal As String = "", _
                             Optional ByVal sClave As String = "") As String
    ' Esta es una función que llamará directamente a ConvertirClave
    '
    m_Accion = eDesencriptar
    DesEncriptar = ConvertirClave(sOriginal, sClave)
End Function

Public Function Encriptar(Optional ByVal sOriginal As String = "", _
                             Optional ByVal sClave As String = "") As String
    ' Esta es una función que llamará directamente a ConvertirClave
    '
    m_Accion = eEncriptar
    Encriptar = ConvertirClave(sOriginal, sClave)
End Function

Public Property Get CadenaOriginal() As String
    CadenaOriginal = m_sOriginal
End Property

Public Property Let CadenaOriginal(ByVal NewValue As String)
    ' Sólo asignar si la cadena tiene algún contenido
    If Len(NewValue) Then
        m_sOriginal = NewValue
    Else
        ' Devolver un error, si así se ha indicado
        If m_RaiseError Then
             With Err
                 .Description = "Se debe asignar algún contenido a la cadena a encryptar / desencriptar"
                 .Number = 13
                 .Source = "cEncrypt::CadenaOriginal"
                 .Raise .Number
             End With
        End If
    End If
End Property

Public Property Get Clave() As String
    Clave = m_sClave
End Property

Public Property Let Clave(ByVal NewValue As String)
    ' Sólo asignar si la cadena tiene algún contenido
    If Len(NewValue) Then
        m_sClave = NewValue
    Else
        ' Devolver un error, si así se ha indicado
        If m_RaiseError Then
             With Err
                 .Description = "Se debe asignar algún contenido a la cadena a usar como clave para encriptar / desencriptar"
                 .Number = 13
                 .Source = "cEncrypt::Clave"
                 .Raise .Number
             End With
        Else
             ' Si no, devolver el valor por defecto
             m_sClave = mc_sClave
        End If
    End If
End Property

Public Property Get RaiseError() As Boolean
    RaiseError = m_RaiseError
End Property

Public Property Let RaiseError(ByVal NewValue As Boolean)
    m_RaiseError = NewValue
End Property

Public Property Get Accion() As eEncrypt
    Accion = m_Accion
End Property

Public Property Let Accion(ByVal NewValue As eEncrypt)
    ' Si el valor indicado es 0 será Descencriptar,
    ' si es cualquier otro valor, será encriptar
    ' De esta forma se aceptarán valores boolenos
    If NewValue = 0 Then
        m_Accion = eDesencriptar
    Else
        m_Accion = eEncriptar
    End If
End Property
Nuestro siguiente paso sera guardar el proyecto "ClsEncrypt", esto es meramente circunstancial, ustedes pueden poner el nombre que deseen, asi podran recordarlo mas facilmente

y como en nuestro ejemplo anterior deben registrar el DLL resultante (retomare parte del texto anterior)
Cita:
Ahora, ya una ves que nosotros guardamos el proyecto y renombrado la clase, podemos proceder a generar nuestra DLL, para esto:
Cita:
Cita:
Menu Archivo
"Generar ClsEncrypt.Dll" <---- cambiara dependiendo del nombre de su proyecto
despues les pregunta, en que directorio desean guardarlo, una ves seleccionado todo listo....

Siguiente paso, una ves terminada la compilacion de nuestro DLL, procederemos a realizar la copia a nuestro directorio WEB, y tambien al registro de la misma de la siguiente forma:

Cita:
Cita:
Regsvr32 [/u] [/s] <nombre del fichero>
Por ejemplo:
REGSVR32 c:\windows\system\Dao350.dll
Los parámetros opcionales [/u] [/s] significan lo siguiente:
[/u] - lo utilizamos cuando queremos "desregistrar" una DLL (o un .ocx en vez de registrarlo).
[/s] - modo "silencioso" - no despliega los mensajes durante la operación.
ya realizado este segundo procedimiento, las pruebas de uso
primero:
creamos el objeto que contendra la clase
Cita:
Cita:
set Encripta = server.CreateObject("Encriptar.clsEncriptar")

segundo: parametrizacion del entorno

la funcion consta de la cadena de texto, clave de encriptacion y un valor booleano, similar a esto:

Para encriptar
Cita:
Encripta.ConvertirClave(texto, Clave, True)
y esta para desencriptar
Cita:
Encripta.ConvertirClave(texto, Clave, False)
cabe mencionar que nosotros tenemos por defecto una clave de encriptacion, esto quiere decir, podemos realizar una encriptacion sin necesidad de mandar una clave para este fin, me refiero a esto

Para encriptar
Cita:
Encripta.ConvertirClave(texto, , True)
y esta para desencriptar
Cita:
Encripta.ConvertirClave(texto, , False)
donde miramos la ausencia del segundo parametro (la clave)

Ahora, he aqui un ejemplo de uso en nuestra pagina ASP

Cita:
Cita:
<%'recordar que esta sera nuestra clave de encriptacion
Clave="VB6"

'clave o string a encriptar
text="Prueba Exitosa"

palabra a encriptar es: <%=pass%><br />

encriptada:(<%
TextoEnc = Encripta.ConvertirClave(texto, Clave, True)
response.Write textoenc

%>)<br />

desencriptada:(<%

TextoEnc = Encripta.ConvertirClave(textoenc, Clave, false)
response.Write textoenc

%>)<br />

Ahora utilizando la clave por defecto
<br />

mismo texto:

<br />

encriptada:(<%

TextoEnc = Encripta.ConvertirClave(pass, , True)'encriptar
response.Write textoenc

%>)<br />
la respuesta seria "encriptada:(¦´›»¤‡v‡ž¿µšÅµ‡)"
desencriptada:(<%

TextoEnc = Encripta.ConvertirClave(textoenc, , false)
response.Write textoenc

%>)<br />



espero que les sirva, como guia para que puedan crear sus propios codigos de encriptacion de 2 vias

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:56.