Pergunta

Eu tenho um aplicativo VB6 velho que usa um controle ImageList de COMCTL32.OCX ( "Microsoft Windows comum controlos 5.0 (SP2)") para fornecer ícones para TreeViews e ListViews.

O aplicativo não vai mesmo lançar no Windows 7.0 de 64 bits. O minuto ele tenta carregar o formulário que tem o ImageList sobre ele, ele trava (bem, na verdade, o aplicativo pisca para fora, sair sem deixar vestígios).

A remoção do ImageList das resolve formar o problema.

Todas as idéias?

Foi útil?

Solução

Eu resolvi esse problema, substituindo todas as instâncias do COMCTL32.OCX, que veio com VB5, com MSCOMCTL.OCX, que veio com VB6.

Microsoft KB artigo 190952 tem instruções para fazer isso. Era praticamente apenas um-de pesquisa global e substituir operação.

Outras dicas

Assinalar um bug para a Microsoft. O tempo de execução VB6 é ainda apoiada em 64 bits do Windows 7. Comctl32 .ocx não é instalado com o Windows 7, mas é explicitamente listada como suportado no Windows 7.

A sua solução é OK. Mas COMCTL32.OCX deve funcionar bem em Win64 de qualquer maneira (Vista ou 7).

Apenas um pequeno conselho:

Se estiver usando MSCOMCTL.OCX você não será capaz de aplicar a sua listview ou TreeView o XP / style Vista / 7 e seu aplicativo pode parecer estranho. Manifest não terá qualquer efeito sobre controles Mscomctl.ocx.

Uma solução alternativa seria a subclasse os controles Mscomctl.ocx, e uma vez que ainda contém um cabeçalho COMCTL32.DLL você pode manipular como ele pinta.

(eu teria postado como um comentário, mas eu ainda não pode)

É possível que você está correndo em um problema com Data Execution Protection (DEP). Testá-lo desativando DEP:

bcdedit.exe /set {current} nx AlwaysOff

Reiniciar depois de entrar o acima em uma linha de comando. Lembre-se de ligá-lo novamente, pois é o equivalente a executar o Windows com suas calças para baixo.

Edit: O comando acima funciona em Vista. Eu não tentei isso no Windows 7.

A emenda DEP menos drástica é ir para o diálogo desempenho de computadores (guia Avançado de propriedades do sistema) e adicione os aplicativos EXE para a lista de exceções na guia DEP.

BTW, você está certo de que este não pertence em serverfault.com. : P

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top