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

¿Como puedo registrar mi DLL ActiveX?

Estas en el tema de ¿Como puedo registrar mi DLL ActiveX? en el foro de Visual Basic clásico en Foros del Web. Que onda compañeros del foro VB, la duda es; suponiendo que tengo mi DLL creada en Visual Basic. ¿Se puede llevar a todas partes con ...
  #1 (permalink)  
Antiguo 29/07/2005, 20:12
Avatar de Jad-Neo  
Fecha de Ingreso: octubre-2004
Mensajes: 344
Antigüedad: 19 años, 6 meses
Puntos: 0
¿Como puedo registrar mi DLL ActiveX?

Que onda compañeros del foro VB, la duda es; suponiendo que tengo mi DLL creada en Visual Basic. ¿Se puede llevar a todas partes con su respectivo ejecutable?, he escuchado por ahí que si pero registrandolo. ¿Alguien sabe como se hace eso, sin usar REGSRV32?
Bye y espero puedan ayudarme, gracias.
  #2 (permalink)  
Antiguo 30/07/2005, 06:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación

Cita:
Iniciado por Jad-Neo
Que onda compañeros del foro VB, la duda es; suponiendo que tengo mi DLL creada en Visual Basic. ¿Se puede llevar a todas partes con su respectivo ejecutable?, he escuchado por ahí que si pero registrandolo. ¿Alguien sabe como se hace eso, sin usar REGSRV32?
Bye y espero puedan ayudarme, gracias.
Pues por que quieres hacerlo sin el REGSVR32, para eso existe el ejecutable ese....
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 30/07/2005, 08:45
Avatar de hernanmdq  
Fecha de Ingreso: julio-2005
Ubicación: Argentina - Entre Rios
Mensajes: 167
Antigüedad: 18 años, 9 meses
Puntos: 1
Creo que te referis a cuando creas un ejecutable, este se encarga de registrarlo por si solo. Por ejem. yo uso el visual studio installer y cuando agregas un dll, podes decirle que lo registre al momento de instalar la aplicacion. Lo que si seguro se vale del regsv32 para llevar a cabo esta tarea. Espero haberte ayudado, saludos.
  #4 (permalink)  
Antiguo 30/07/2005, 09:02
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo

Cita:
Iniciado por hernanmdq
Creo que te referis a cuando creas un ejecutable, este se encarga de registrarlo por si solo. Por ejem. yo uso el visual studio installer y cuando agregas un dll, podes decirle que lo registre al momento de instalar la aplicacion. Lo que si seguro se vale del regsv32 para llevar a cabo esta tarea. Espero haberte ayudado, saludos.
Precisamente, se vale del Regsvr32, lo cual no es nada difícil de hacer:
Código:
Shell "regsvr32 /s MiDll.dll"
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 01/08/2005, 06:09
Avatar de hernanmdq  
Fecha de Ingreso: julio-2005
Ubicación: Argentina - Entre Rios
Mensajes: 167
Antigüedad: 18 años, 9 meses
Puntos: 1
Cita:
Iniciado por David el Grande
Precisamente, se vale del Regsvr32, lo cual no es nada difícil de hacer:
Código:
Shell "regsvr32 /s MiDll.dll"
Lo que pasa, es que seguro este muchacho "jad-neo", queria instalar el programa y no tener que registrar el DLL manualmente. Creo haber entendido su duda y responderla.
A veces hay que ver un poco más alla y no contestar lo obio. Saludos
  #6 (permalink)  
Antiguo 09/08/2005, 17:13
Avatar de Jad-Neo  
Fecha de Ingreso: octubre-2004
Mensajes: 344
Antigüedad: 19 años, 6 meses
Puntos: 0
Método directo

Muchisimas gracias por su ayuda, pero para aquellos que no quieren usar el REGSVR32 ya encontré una manera mucho mas rápida (pero necesitas tener los privilegios suficientes o estar como cuenta Administrador).
Primero hagan la referencia a la DLL ActiveX en Referencias (si es una Dll hecha en C/C++ no sale la jugada), después pongan esto en el Form principal de la aplicaciónr:

Código:
'REGSVR32 hace una llamada a este Sub en la DLL y por eso lo puede registrar
Private Declare Function DllRegisterServer Lib "MiDllActiveX.dll" () As Long
'lo mismo hace pero con esta, para desregistrar
Private Declare Sub DllUnregisterServer Lib "MiDllActiveX.dll" ()
'Variable que hace la referencia a cualquier clase de la DLL, ustedes ponen la que quieran
Dim MiClase As XClase

'NOTA: Si son varias DLLs hay que usar Alias

Private Sub Form_Load()
On Error Resume Next
'Hay que registrar la DLL
DllRegisterServer

'Hacer la referencia
Set MiClase = New XClase

'Controlar el error
If (MiClase Is Nothing) Then
    MsgBox "No se puede encontrar MiDllActiveX.dll necesario para ejecutar este programa", vbExclamation
    End
End If
End Sub

'En el Unload del Form
Private Sub Form_Unload(Cancel As Integer)
'Liberar MiClase
Set MiClase = Nothing
'Desregistrar la DLL
DllUnregisterServer
End Sub
Después de todo este rollo y tener compilado el programa copien su(s) DLL(s) al directorio del ejecutable, ahora los van a poder llevar a todos lados y donde quieran(si se dan cuenta es una imitación de algunas DLLs stdcall de C/C++ con sus respectivos programas).

Espero les sirva. Bueno esto es para programas express, por así decirlo; para aquellos que no quieran crear todo un instalador por uno o dos DLLs. No más que tienen que ser con las DLLs de VB, todas la DLLs ActiveX y controles OCX tienen esas APIs mencionadas arriba, incluyendo otras no mesionadas pero no son de primera importancia, asi que no debe haber ningun problema. Bye y saludos.

P.D.: Ahora lo que estoy tratando es de comprobar si el componente ya está registrado o nó.

Última edición por Jad-Neo; 26/08/2005 a las 20:12 Razón: Correción
  #7 (permalink)  
Antiguo 09/08/2005, 18:24
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Realmente una DLL normal son las que tú dices "de C/C++". Las DLLs ActiveX son éso, componentes ActiveX, no DLLs, aunque hayan decidido darlas el nombre.
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 15:44.