- PR -

VB6.0で、ActiveXDLLを作成し、EXE側から作成したDLLを起動したい

投稿者投稿内容
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-05-18 19:17
諸農です。

引用:

ActiveXを利用する側は、VB6.0です。



VB6で作成してVB6で利用する、となると私はお手上げです。
すみません。

他の方からの情報を待つか、COM/ActiveX関連の書籍を
参考にしてください。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-05-19 07:50
1.EXE側にDLL参照するようにするソース
CreateObjectを使います。
Dim objA As Object
Set objA = CreateObject("コントロールの名前")

2.EXE側からDLLのフォーム呼び出すソース
果たしてそのようなActiveXをVB6で記述したとして、まともに動作するかは謎です。仮に行うとしたら、DLL側でForm相当のインターフェースを用意するか、FormをImplementsする事になるでしょう。
その上で、EXE側は以下のようなコードでFormを呼び出すことになるのかな。
Dim objA As Object
Set objA = CreateObject("コントロールの名前")
objA.Show

3.DLL側のフォームロードと、アンロードイベント
ん?そのまま普通に・・・。と言うかImplementsした場合、強制的に書かされるはず。中身は空にするなり、自分で必要なコードを書くなり好きに。

#今現在、どんなコードを実装しているんだろうと気になったり・・・
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
effemia
常連さん
会議室デビュー日: 2005/04/05
投稿数: 34
お住まい・勤務地: 札幌
投稿日時: 2005-05-19 13:05
お世話になります。

>DLL側でForm相当のインターフェースを用意するか、FormをImplementsする事になるでしょう。

ということですが、
DLL側のクラス上に、Implements フォーム名
としたんですが、コンパイルエラーになります。
引き続き、調査続けますが、Implementsの使い方間違っているとは思いますが、
正しい記述法を探しています。
Implementsの使い方を教えていただけないでしょうか。
ちなみに、MSDNがないため調査も四苦八苦しております。
よろしくお願い致します。
rucio
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 98
投稿日時: 2005-05-20 09:09
いざとなれば、DLL側のクラスにフォームを呼び出すPublicなプロシージャを作成すれば、確実にDLL側のフォームを呼び出せます。

※対象はVB6です。

例:
▼DLL側の構成
プロジェクト名:DLLProj
フォーム名:frmDLL
クラス名:Class1

▼DLLのClass1に次のように記述
Public Sub ShowMyForm()

frmDLL.Show

End Sub

記述後DLL側をコンパイルする。

▼EXE側のForm1に次のように記述
(事前にDLLに参照設定をしておく)
Private Sub Command1_Click()

Dim c As New DLLProj.Class1

c.ShowMyForm

End Sub

ところで、ここは.NETの話題を扱うところなので、VB6の質問があればVB6を専門に扱っているところの方が良い回答が得られると思います。

スキルアップ/キャリアアップ(JOB@IT)