2008-08-02 11 views
31

私の日常業務の一部は、従来のVB6アプリケーションを維持し拡張しています。一般的なエンジンはC/C++で書かれており、VB6はこれらの機能を使用してパフォーマンスを向上させています。VB6 IDEで作業するときにCOMコントロールをアンロード

非同期プログラミングに関しては、Cインターフェイスでは不十分で、COMコントロールを使用してイベントをVB6に送信します。

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

私が見つけた解決策はVBでコントロールを有効にするのではなく、CreateObject()をコントロールのフルネームで使用することです。 VB6は私が使用しているインターフェイスは何も知らず、IntelliSenseへのアクセスもないため、コントロールとしてオブジェクトを宣言しなければならないという問題があります。これは痛みです。

アプリケーションを終了した後、または直接IDEでコントロールをアンロードするようVB6に伝えることができますか?

答えて

27

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

ではなく VCの下のVisual CおよびVisual Basicのサイド・バイ・サイド、実行VB6 を実行しているの...私は何をすべきかです:VC

  1. ロードアップ
  2. 開きますCOMを含むプロジェクトVB6のワークスペース
  3. をロードするための適切なコマンドライン引数が今だけヒットしてVCでオブジェクト
  4. 編集、変更、など
  5. は、VB6.EXEする出力実行可能ファイルを設定しますF5キーを押してVB6 IDEを起動し、VB6プロジェクトを読み込みます。
  6. 再度COMコードを変更する場合は、VB6.EXEを終了して変更を加え、再度F5キーを押します。あなたがあなたのワークスペースを保存する限り、VB6は開いていたウィンドウとすべてのプロジェクト設定を覚えています。この方法の

利点:

  • あなたはCOMオブジェクトにブレークポイントを設定することができ、デバッグ、それはあなたが喜んで同時にCとVBでデバッグすることができ、完全なソースデバッガ
  • を使用して
  • VB6が実行されているときは常に、最新バージョンのCOM DLLがあります。
+1

これは非常にスマートなので、私はそれを試みます。 私は古いクッキーベースのアカウントを新しいOpenIdベースのアカウントとマージすることができますか?この回答を答えとしてマークすることができます... –

+2

これはVB以外のIDEでも動作します。私はこれをDelphi/VB6で成功させました。 –

関連する問題