VB6 IDEでの作業時にCOMコントロールをアンロードする

Translate

私の日常業務の一部は、レガシーVB6アプリケーションの保守と拡張です。一般的なエンジンはC / C ++で記述されており、VB6はパフォーマンスを向上させるためにこれらの関数を使用します。

非同期プログラミングに関しては、Cインターフェイスでは不十分であり、VB6にイベントを発生させるためにCOMコントロールに依存しています。

私の問題は、コントロールをVB6に登録すると、VBがこのコントロールをメモリにロードし、VB6IDEを終了するまでアンロードしないことです。コントロールは常にロードされているため、DLLファイルがロックされているため、VC6で再コンパイルできません。

私が見つけた解決策は、VBで制御を有効にするのではなく、CreateObject()私のコントロールのフルネームで。問題は、VB6が使用しているインターフェイスを認識せず、IntelliSenseにアクセスできないため、コントロールをオブジェクトとして宣言する必要があることです。これは面倒です。

アプリケーションを終了した後、またはIDEで直接、コントロールをアンロードするようにVB6に指示する方法はありますか?

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

すべての答え

Translate

VB6にコントロールをアンロードさせる良い方法はないと確信しています。

これが私がすることです... VisualCとVisualBasicを並べて実行する代わりに、VB6を実行しますVC:

  1. VCをロードする
  2. COMオブジェクトを含むプロジェクトを開きます
  3. 編集、変更など。
  4. VCで、VB6ワークスペースをロードするための適切なコマンドライン引数を使用して、出力実行可能ファイルをVB6.EXEに設定します
  5. F5キーを押してVB6IDEを起動し、VB6プロジェクトをロードします。
  6. COMコードを再度変更する場合は、VB6.EXEを終了し、変更を加えて、もう一度F5キーを押します。ワークスペースを保存する限り、VB6は開いたウィンドウとすべてのプロジェクト設定を記憶します。

この方法の利点:

  • COMオブジェクトにブレークポイントを設定し、フルソースデバッガーを使用してデバッグできます
  • CとVBで同時に楽しくデバッグできます
  • VB6が実行されているときはいつでも、常に最新バージョンのCOMDLLがあります。
ソース