Descarregar um controle COM ao trabalhar no IDE do VB6

Translate

Parte do meu trabalho diário é manter e estender aplicativos VB6 legados. Um mecanismo comum é escrito em C / C ++ e VB6 usa essas funções para melhorar o desempenho.

Quando se trata de programação assíncrona, uma interface C não é suficiente e contamos com controles COM para disparar eventos para VB6.

Meu problema é que quando eu registro o controle no VB6, o VB carrega esse controle na memória e não o descarrega até que eu saia do IDE do VB6. Como o controle é carregado o tempo todo, não consigo recompilá-lo no VC6, pois o arquivo DLL está bloqueado.

Uma solução que encontrei não é habilitar o controle em VB, mas usar oCreateObject()com o nome completo do meu controle. O problema então é que devo declarar meu controle como um Objeto porque o VB6 não conhece nada da interface que estou usando e não tenho acesso ao IntelliSense, o que é uma dor.

Alguma ideia de como posso dizer ao VB6 para descarregar os controles após sair do aplicativo ou diretamente no IDE?

This question and all comments follow the "Attribution Required."

Todas as respostas

Translate

Tenho certeza de que não há uma boa maneira de forçar o VB6 a descarregar o controle.

Aqui está o que eu faço ... em vez de executar Visual C e Visual Basic lado a lado, execute VB6debaixoVC:

  1. Carregar VC
  2. Abra o projeto que contém seus objetos COM
  3. Editar, alterar, etc.
  4. No VC, defina o Executável de Saída como VB6.EXE com argumentos de linha de comando apropriados para carregar o espaço de trabalho VB6
  5. Agora basta pressionar F5 para iniciar o IDE VB6 e carregar seu projeto VB6
  6. Quando você quiser alterar o código COM novamente, saia do VB6.EXE, faça as alterações e pressione F5 novamente. Contanto que você salve seu espaço de trabalho, o VB6 lembrará quais janelas você abriu e todas as configurações do seu projeto.

Vantagens deste método:

  • Você pode definir pontos de interrupção no objeto COM e depurá-lo usando um depurador de código-fonte completo
  • Você pode facilmente depurar em C e VB ao mesmo tempo
  • Sempre que o VB6 está em execução, ele sempre tem a versão mais recente das DLLs COM
Fonte