|
■No54258 (Elldorado さん) に返信 > VB6のプロジェクトが以上のように2つあるとします。 > form1は両方のプロジェクトで使う共通のフォーム(画面)です。 その構成では共有できません。 共通のフォームにするのであれば、下記のような手法が考えられます。
(案1) 両EXEに、同じフォームを含めてそれぞれコンパイルする。 (案2) form1 用の ActiveX DLL プロジェクトを別途用意し、それを両プロジェクトから呼び出す。 (案3) Form1 側をスタンドアロン型の ActiveX EXE にし、他方から利用できるようにする。 (案4) Form1 側を常駐させておき、非表示にしておいた form1 を DDE なり API なりで再表示させて利用。
案1 は、単純にソースコードの複製です。その意味で、厳密には共有ではありません。
案4 は、別プロセスでの起動となりますので、データ交換やフォーカス制御が厄介になります。
案2, 案3 なら共有できますが、レジストリ(あるいはマニフェスト)への登録が必要になりますし、 一度リリースした後では、インターフェイスをうかつに変更できないという制限がつきます。
ActiveX でのフォーム連携の方法は、VB6 付属の MSDN ライブラリに同梱されている Coffee2.vbp サンプル アプリケーション CoffWat2.vbp サンプル アプリケーション を参照してみてください。なお、ヘルプで下記の項目も参照してみてください。
[Visual Basic ドキュメント] └[Visual Basic の使用方法] └[コンポーネント ツール ガイド] └[ActiveX コンポーネントの作成方法] └[ActiveX EXE コンポーネントの作成手順] └[アウトプロセスのモーダル フォームとモードレス フォームの動作]
> OS:WindowsXP Pro + SP3 > VisualBasic Ver6.0 + SP5 ちなみに、XP SP3 に同梱されている VB6 ランタイムは、SP5 より後の物です。
VB6 の MSVBVM60.DLL バージョン: v6.0.81.76(SP無), v6.0.82.68(SP2), v6.0.84.95(SP3), v6.0.88.77(SP4), v6.0.89.64(SP5), v6.0.97.82(SP6) WinXP で提供される MSVBVM60.DLL: v6.0.92.37(XP SP無/SP1), v6.0.96.90(XP SP2), v6.0.98.2(XP SP3)
|