Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: servycomsrl en 27 Mayo 2015, 05:15 am



Título: No funcion programa en VB
Publicado por: servycomsrl en 27 Mayo 2015, 05:15 am
Hola, tengo un programa hecho en VB hace unos años. Ahora quiero hacerlo funcionar, pero me da como error que no están registrados ocx. En mi PC tengo instalado Windows 7. Hay algún programa que determine cuales son los errores u origen de los errores?


Título: Re: No funcion programa en VB
Publicado por: Shell Root en 27 Mayo 2015, 05:47 am
Registra las DLL
Código
  1. regsvr32 PATH_DLL


Título: Re: No funcion programa en VB
Publicado por: okik en 27 Mayo 2015, 20:03 pm
Cuando se produce un error se crea un archivo de extensión *.log en el directorio del proyecto (siempre y cuando no lo abras desde un CD/DVD).

Abre el archivo LOG con el Notepad. En él te informa del error y el OCX que te falta. También puedes abrir con notepad el archivo de proyecto VBP, por ejemplo "Proyecto1.vbp", y verás los OCX que usa tu proyecto en varias líneas, por ejempo:

Código
  1. Type=Exe
  2. Form=frmImagenconbarra.frm
  3. Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\SYSTEM\stdole2.tlb#OLE Automation
  4. Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.1#0; COMDLG32.OCX
  5. Object={6D940288-9F11-11CE-83FD-02608C3EC08A}#2.1#0; IMGEDIT.OCX

Busca el archivo OCX donde tu creas que pueda estar, o Internet. Pues tu proyecto tiene dependencia con él y sin él no funciona.  Si hubieras dicho cual es a lo mejor te hubiera podido  ayudar con eso.

Mete el archivo OCX dentro de la carpeta del proyecto. Por ejemplo supón que fuera COMDLG32.OCX pues lo metes en la carpeta del proyecto.  

Abre un proyecto NUEVO desde VB, vas al menú y selecciona Proyecto/Componentes. En el cuadro componentes dale a EXAMINAR y busca la carpeta donde tienes el proyecto. Selecciona el archivo OCX. Automáticamente aparecerá en la lista de componentes y seleccionado. Dale a Aceptar y cierra el proyecto (sin guardar).

Ahora cuando abras el proyecto que te da error, ya no dará error. A veces, si abres el proyecto aunque te de error, VB sustituye le OCX por un PictureBox. Si es el caso tendrás que ir a Componentes, volver a seleccionar el OCX de la lista y meterlo en el proyecto.

Si quieres puedes meter el archivo OCX en la carpeta Windows/System32, y si no me equivoco VB detectará automáticamente el OCX al abrir. Si no es así, haces lo anterior, desde Componentes vas le das a Examinar y busca el archivo en windows/system32. De este modo, aunque quites o cambies la carpeta que contiene el proyecto el OCX siempre estará disponible para otras aplicaciones.


Otra opción es la que te ofrece #Shell Root más arriba, lo malo es que no siempre funciona, pues algunos OCX no disponen de la información para poder registrarlo mediante regsvr32.exe:

- Supón que el OCX es COMDLG32.OCX. Pues mete el archivo en una carpeta, dentro de ella creas un archivo de texto y lo modificas con la siguiente línea:

regsvr32  COMDLG32.OCX


- Guardas los cambios y cambia la extensión del archivo de texto a *.cmd. Por ejempo: RegOCX.txt -->  lo cambias a ---> RegOCX.cmd.

-Ejecuta el archivo cmd con doble clic. Recomiendo hacerlo con requisitos de Administrador, si estás ejecutando desde una cuenta sin privilegios de Administrador.


Por cierto, espero que no sea imgEdit.ocx pues no te va a funcionar, pues necesitas algo mas que dicho archivo.