Pregunta

Parte de mi trabajo diario es mantener y ampliar aplicaciones VB6 heredadas.Un motor común está escrito en C/C++ y VB6 utiliza estas funciones para mejorar el rendimiento.

Cuando se trata de programación asincrónica, una interfaz C no es suficiente y dependemos de controles COM para disparar eventos a VB6.

Mi problema es que cuando registro el control en VB6, VB carga este control en la memoria y no lo descarga hasta que salgo del IDE de VB6.Como el control está cargado todo el tiempo, no puedo volver a compilarlo en VC6 porque el archivo DLL está bloqueado.

Una solución que encontré es no habilitar el control en VB sino usar el CreateObject() con el nombre completo de mi control.El problema entonces es que debo declarar mi control como un Objeto porque VB6 no sabe nada de la interfaz que estoy usando y no tengo acceso a IntelliSense, lo cual es una molestia.

¿Alguna idea de cómo puedo decirle a VB6 que descargue los controles después de salir de la aplicación o directamente en el IDE?

¿Fue útil?

Solución

Estoy bastante seguro de que no hay una buena manera de obligar a VB6 a descargar el control.

Esto es lo que hago...en lugar de ejecutar Visual C y Visual Basic uno al lado del otro, ejecute VB6 bajo VC:

  1. Cargar VC
  2. Abra el proyecto que contiene sus objetos COM
  3. Editar, cambiar, etc.
  4. En VC, configure el ejecutable de salida para que sea VB6.EXE con los argumentos de línea de comandos apropiados para cargar el espacio de trabajo de VB6.
  5. Ahora simplemente presione F5 para iniciar VB6 IDE y cargar su proyecto VB6
  6. Cuando desee volver a cambiar el código COM, salga de VB6.EXE, realice los cambios y presione F5 nuevamente.Siempre que guarde su espacio de trabajo, VB6 recordará qué ventanas tenía abiertas y todas las configuraciones de su proyecto.

Ventajas de este método:

  • Puede establecer puntos de interrupción en el objeto COM y depurarlo utilizando un depurador de código fuente completo
  • Felizmente puedes depurar en C y VB al mismo tiempo
  • Siempre que se ejecuta VB6, siempre tiene la última versión de las DLL COM
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top