Pregunta

Tengo una vieja aplicación VB6 que usa un control ImageList de COMCTL32.OCX (" Microsoft Windows Common Controls 5.0 (SP2) ") para proporcionar iconos para TreeViews y ListViews.

La aplicación ni siquiera se iniciará en Windows 7.0 de 64 bits. En el momento en que intenta cargar el formulario que tiene ImageList, se bloquea (bueno, en realidad, la aplicación se apaga y sale sin dejar rastro).

Eliminar el ImageList del formulario resuelve el problema.

¿Alguna idea?

¿Fue útil?

Solución

Resolví este problema reemplazando todas las instancias de COMCTL32.OCX, que venía con VB5, con MSCOMCTL.OCX, que venía con VB6.

El

artículo de Microsoft KB 190952 tiene instrucciones para hacerlo. Era prácticamente una operación de búsqueda y reemplazo global.

Otros consejos

Informar un error a Microsoft. El tiempo de ejecución de VB6 es todavía es compatible en Windows 7. de 64 bits COMCTL32 .ocx no está instalado con Windows 7, pero está aparece explícitamente como se admite en Windows 7.

Su solución está bien. Pero COMCTL32.OCX debería funcionar bien en Win64 de todos modos (Vista o 7).

Solo un pequeño consejo:

Si usa MSCOMCTL.OCX, no podrá aplicar a su vista de lista o vista de árbol el estilo XP / Vista / 7 y su aplicación puede parecer extraña. El manifiesto no tendrá ningún efecto en los controles MSCOMCTL.OCX.

Una solución alternativa sería subclasificar los controles MSCOMCTL.OCX, y dado que todavía contienen un encabezado COMCTL32.DLL, podría manipular cómo se pinta.

(Hubiera publicado como comentario, pero aún no puedo)

Es posible que tenga un problema con la Protección de ejecución de datos (DEP). Pruébelo desactivando DEP:

bcdedit.exe /set {current} nx AlwaysOff

Reinicie después de ingresar lo anterior en una línea de comando. Recuerde volver a encenderlo, ya que es el equivalente a ejecutar Windows con los pantalones caídos.

Editar: el comando anterior funciona en Vista. No lo he probado en Windows 7.

Un ajuste DEP menos drástico es ir al cuadro de diálogo de rendimiento de la computadora (pestaña avanzada de propiedades del sistema) y agregar las aplicaciones exe a la lista de excepciones en la pestaña DEP.

Por cierto, ¿estás seguro de que esto no pertenece a serverfault.com? : P

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top