Título: Visual Basic 6.0 se cierra sin motivo Publicado por: keef en 2 Enero 2021, 23:14 pm Hola.
Desde hace unos 2 meses que vengo experimentando un problema, que no me deja probar el código que escribo en VB en ciertas ocasiones. Pero el problema no tiene relación con el lenguaje o la programación, sino con que a veces, cuando me dirijo a ejecutar el código escrito por mí, la aplicación se cierra sola de manera violenta. He notado que esto solo pasa cuando uso ciertas APIs en el código; Estas APIs las probé en un VB6 instalado en Windows 7 y el problema desaparece, pero yo necesito la aplicación funcional en Windows 10, que es el sistema desde el que escribo ahora y en el que se me presenta este problema. Busqué en Google mi caso, el cual no es tan singular, hay varias personas preguntando lo mismo, pero en el caso de estas, se cierra en otros momentos y bajo otras condiciones, como al abrir un formulario, al compilar, etc. Agradezco cualquier información que me ayude a averiguar el porqué de este problema, que cuando me apareció por primera vez, me sorprendió bastante, puesto que nunca he tenido problemas de este estilo. Uso Windows 10 de 64 bits y, como VB6 está disponible solamente para sistemas 32 bits con algo de antigüedad, tuve que hacer algunos cambios en la carpeta raíz del programa para instalarlo de manera exitosa. Gracias y saludos. :rolleyes: Título: Re: Visual Basic 6.0 se cierra sin motivo Publicado por: EdePC en 3 Enero 2021, 20:30 pm Has leído los detalles del mensaje de error? normalmente ahí dice el exe o dll que causó el error. También se guardan estos detalles en el Visor de Eventos > Registros de Windows > Aplicación
Lo primero que pensaría es Incompatibilidad de DLL, si estás usando una DLL que no es del propio instalador de Visual Basic es posible que Win10 tenga la versión más reciente y el VB sea de una versión anterior. Si te es posible puedes subir una muestra de un proyecto muy simple que de ese error, para intentar replicarlo, ver su cola de llamadas y archivos cargados para detectar el problema. Título: Re: Visual Basic 6.0 se cierra sin motivo Publicado por: keef en 3 Enero 2021, 21:18 pm Lo primero que pensaría es Incompatibilidad de DLL, si estás usando una DLL que no es del propio instalador de Visual Basic es posible que Win10 tenga la versión más reciente y el VB sea de una versión anterior. Hasta donde sé, solo uso las DLL que se instalan con el VB, aunque es posible que el Msvbvm60.dll o algún archivo parecido sea diferente, realmente no lo se :rolleyes: Entré al visor de eventos, y me encontré con los errores mencionados, estos son los códigos y algunos detalles de estos: El programa VB6.EXE (versión 6.0.81.76) dejó de interactuar con Windows y se cerró. Para ver si hay más información disponible sobre el problema, comprueba el historial de problemas en el panel de control de seguridad y mantenimiento. Id. de proceso: 17e4 Hora de Inicio: 01d6e13daa8a4c3b Hora de finalización: 4294967295 Ruta de la aplicación: C:\Program Files (x86)\Microsoft Visual Studio\VB98\VB6.EXE Id. de informe: 03cf55aa-0981-43c3-808f-e7c425acb432 Nombre completo del paquete con errores: Id. de la aplicación relativa al paquete con errores: Tipo de bloqueo: Top level window is idle Este es el error mas reciente, y creo que el que me motivó a hacer esta pregunta acá. Nombre de la aplicación con errores: VB6.EXE, versión: 6.0.81.76, marca de tiempo: 0x3592011f Nombre del módulo con errores: ntdll.dll, versión: 10.0.18362.1171, marca de tiempo: 0xe94aeef6 Código de excepción: 0xc0000029 Desplazamiento de errores: 0x000a2907 Identificador del proceso con errores: 0x4090 Buscaré los errores a ver que encuentro. Uno de los proyectos donde tuve este error, fue el siguiente: Código: Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long Me encontré este código en una página web, y quise probarlo, así que lo probé, y sucedió el error mencionado. Otra cosa es que en ningún momento se muestra algún mensaje de error, simplemente la aplicación deja de responder y se pone en ese estado "X aplicacion (no responde)" y luego se cierra. Gracias y saludos. Título: Re: Visual Basic 6.0 se cierra sin motivo Publicado por: EdePC en 3 Enero 2021, 23:43 pm https://www.vbforums.com/showthread.php?781115-RESOLVED-GetProcAddress-freezes-IDE
Citar CallWindowProc. That function is sending 4 parameters to SetWindowText. SetWindowText expect just 2 parameters. CallWindowProc can only be used with APIs that expect 4 parameters else crashes are inevitable Pues como dice ahí, CallWindowProc envía 4 parámetros a SetWindowText, pero SetWindowText solo espera 2, entonces CRASH. CallWindowProc solo se utiliza para llamar a APIs que esperan 4 parámetros. La alternativa que proponen es utilizar SendMessageA, este si usa 4 parámetros Código
Título: Re: Visual Basic 6.0 se cierra sin motivo Publicado por: keef en 4 Enero 2021, 00:19 am Hola!
Gracias por el link y el código, apenas pueda lo revisaré en detalle. Ahora que me doy cuenta, y recuerdo el porqué de los errores, en la mayoría de los casos en los que se presentó este problema en el VB6, es porque hay un error en el código, mas específicamente, en el uso de las APIs. Recuerdo que con GetUserName me pasó algo parecido por un problema en que no declaré una variable correctamente, y se cerró todo :rolleyes: Saludos Título: Re: Visual Basic 6.0 se cierra sin motivo Publicado por: MCKSys Argentina en 4 Enero 2021, 13:30 pm Hola!
El IDE de VB 6 no está diseñado para funcionar en Win10. Te recomiendo usar Win7 en una VM y desarrollar ahí la aplicación. Luego puedes copiar la app fuera de la VM y usarla/probarla. Saludos! |