- 題名: VBで作成したActiveX DLLをC#で使用する方法
- 日時: 2005/09/01 13:46:54
- ID: 12575
- この記事の返信元:
- (なし)
- この記事への返信:
- [12577] Re[1]: VBで作成したActiveX DLLをC#で使用する方法2005/09/01 13:59:35
- [12579] Re[1]: VBで作成したActiveX DLLをC#で使用する方法2005/09/01 14:49:05
- [12590] Re[1]: VBで作成したActiveX DLLをC#で使用する方法2005/09/02 2:51:08
- ツリーを表示
分類:[.NET]
いつもお世話になってます。すえぞーです。
以前にVB6.0で作成したActiveX DLLをC#で使用したいのですが、
参照設定の追加で作成したDLLを追加して試してみてもどうしても
うまく使用できないので投稿させてもらいました。
どうも私が使おうとしているDLLのクラスの階層が2つになっていなければ
動きそうなのですが、このあたりの書き方がよくわかりません。
VB6.0やVB.netだとCreateObject関数を使用してオブジェクトを作成し、
作成したオブジェクトに対してobjTest.Sub1.TestProperty = "てすと1"
のような感じで動いているのでC#でもなんらかのやり方で動くと思うのですが
どうすればよいのでしょうか?
下にテスト用のソースも貼り付けておきますのでわかる方がいらっしゃれば教えてください。
すみませんがよろしくお願いします。
VB6.0のDLLのつくりは単純に書くと以下のようになっています。
<メインのクラス>TestMainClass
------------------------------------------------------------
Private objSub1 As New clsSub1 '下の階層のクラスを宣言
Private ClassCollection As New Collection
Property Get Sub1() As Object
Set Sub1 = objSub1
End Property
Private Sub Class_Initialize()
ClassCollection.Add objSub1
End Sub
------------------------------------------------------------
<下の階層のクラス>clsSub1
命令が呼び出せればなんでもいいのですがいちおうこんな感じでテストしています。
------------------------------------------------------------
Dim sMessageData As String
'テスト用プロパティ
Property Let TestProperty(sData As String)
sMessageData = sData
End Property
Property Get TestProperty() As String
TestProperty = sMessageData
End Property
'テスト用メソッド
Public Function TestMethod()
Call MsgBox("Sub1 :" & vbCrLf & sMessageData, vbInformation)
End Function
------------------------------------------------------------
これでActiveX DLLを作成し、VB6.0やVB.netだとこのようにして使用できます。
------------------------------------------------------------
Private Sub Command1_Click()
Dim objTest As Object
Set objTest = CreateObject("DLLTest.TestMainClass") 'オブジェクト作成
objTest.Sub1.TestProperty = "てすと1" 'プロパティのテスト
Call objTest.Sub1.TestMethod 'メソッドのテスト
Set objTest = Nothing 'オブジェクト開放
End Sub
------------------------------------------------------------