• Domingo 22 de Diciembre de 2024, 21:53

Autor Tema:  Re: Sobre OCX  (Leído 2249 veces)

giomar

  • Miembro MUY activo
  • ***
  • Mensajes: 270
    • Ver Perfil
Re: Sobre OCX
« en: Miércoles 20 de Agosto de 2003, 23:42 »
0
Como puedo registrar mis OCX o DLL desde VB.
Es posible hacer eso
Giomar B.
Desarrollador Web Profesional


Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Sobre OCX
« Respuesta #1 en: Jueves 21 de Agosto de 2003, 08:32 »
0
Para registrar tu componente:

Shell "REGSVR32 /S RutaNombreComponente.ocx"

El modificador /S es para registrar en modo silencioso.
Si quieres desregistrar utiliza el modificador /U.

Suerte.

giomar

  • Miembro MUY activo
  • ***
  • Mensajes: 270
    • Ver Perfil
Re: Sobre OCX
« Respuesta #2 en: Jueves 21 de Agosto de 2003, 17:34 »
0
Lo probe y resulta, la verdad no se como no se me ocurrio probar con el SHELL.
El motivo por el cual hice esta consulta era por que estoy comenzando a crear componentes (simples pero bueno recien comienzo) y notaba que seria un poco fastidioso que el usuario que quizas queria abrir la aplicaion tubiera que hacer todo el proceso del registro como copiarlo a la carpeta SYSTEM o SYSTEM32 y ejecutar el comando de registro entonce se me ocurrio que el mismo programa lo haga pero el problema ahora es el SITEMA OPERATIVO como bien sabes las rutas de las carpetas donde se debe copiar el OCX o DLL cambian segun el sistema operativo.
Bueno parte de este inconveniente lo tengo resuelto ya que puedo saber por codigo que sistema operativo estoy uzando pero lo que desconozco es la ruta que tendria que especificar en cada uno para copiar el archivo y hacer el registro propiamente dicho.
Osea me explico se que para Win2000 la ruta es "C:WINNTsystem32....dll" o "C:WINNTsystem....dll" porque estoy trabajando con este sistema péro ¿De los demas desconozco?.
Ahora no se si me podrias facilitar esa informacion quizas tienes un listado ya perparado o estas mas informado sobre eso.
A si estas interezado puedo pasarte el codigo de como averiguar el sistema operativo lo pidemelo y te lo envio al instanste.
Saludos...
Y gracias  por la ayuda anterior.
<Giomar>:comp:
Giomar B.
Desarrollador Web Profesional


Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Sobre OCX
« Respuesta #3 en: Viernes 22 de Agosto de 2003, 08:30 »
0
Para averiguar en que directorio está instalado windows y cúal es el directorio del sistema (independientemente de la versión) puedes utilizar el siguiente código:

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Private Function WindowsSysDir() as String
   
    Dim strDir As String
    strDir = Space(255)
    GetSystemDirectory strDir, 255
    WindowsSysDir = left(strDir, Instr(1,strDir,Chr(0))-1)
   
End Function

Ten en cuenta que windows no siempre está instalado en el mismo directorio.

Espero que esto te sirva.
Suerte.

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: Sobre OCX
« Respuesta #4 en: Viernes 22 de Agosto de 2003, 15:41 »
0
Generalmente el error se da cuando posterior a la instalacion de una aplicacion, modificamos el proyecto y le agregamos componentes OCX o DLLs.

Ahora....

Cuando ejecutamos esa aplicacion desde el cliente da el tipico error de que no esta registrado, etc , etc.

Como se puede hacer para atajar ese error desde la mismisima aplicacion, y poder determinar que OCX es el que no esta registrado y aplicarle todo el codigo que figura en las respuestas anteriores ?

Gracias
Pablo Tilotta
Analista de Sistemas
Argentina

giomar

  • Miembro MUY activo
  • ***
  • Mensajes: 270
    • Ver Perfil
Re: Sobre OCX
« Respuesta #5 en: Viernes 22 de Agosto de 2003, 16:47 »
0
Gracias Brroz el resultado es mejor del que esperaba inclusive me ayuda a simplificar el codigo para lo que estaba pensando en hacer.
Por lo que veo Chiaravel me gano en la pregunta pues tambien empezaba a tener esa duda.
Si cada vez que ejecute mi aplicacion registro el componente pues quizas con el tiempo el registro de ese componente se malogre por decirlo de alguna manera entonces la pregunta seria:
¿Hay alguna forma de porder preguntar al sistema si dicho componente ya se encuentra regitrado? para ovbiar el registro del mismo cada vez que se ejecute la aplicacion.
Pienso que seria bastante interesante conocer eso, se podrian evitar muchos problemas.
Hasta la proxima
Un saludo a todos y muchas gracias por todo....
!De verdad a buena hora decide entrar en este Foro¡
:good:
Giomar B.
Desarrollador Web Profesional


Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Sobre OCX
« Respuesta #6 en: Lunes 25 de Agosto de 2003, 08:57 »
0
Se podría probar con algo así:

Private Function ChkRegCom() as Boolean
On error Goto Error_Registro
Dim obj1 as Object
Set obj1 = CreateObject("NombreDeClase")
ChkRegCom = True
Salir_Registro:
Set obj1 = Nothing
Exit Function
Error_Registro:
If Err.Number <> 429 Then MsgBox(Err.Number & "  " & Err.Description, vbCritical, "Error")
Resume Salir_Registro
End Function

Si no se puede crear la clase "NombreDeClase", se desencadenará un error 429 (el componente activeX no puede crear el objeto), con lo que abría que registrarlo.

También podríais crear una clave en el registro con datos de vuestra aplicación y chequearla antes de llamar al programa que crea los componentes.

Espero que esto sirva para vuestros propósitos.
Suerte.