2016-04-01 9 views
-1

でのparamとしてDLL interropt C#COMを通過しない私は、ファイルに関するプロパティのリストを格納するクラスとして使用されているC#のDLLを持っています。
C#DLLはCOMで表示され、VB6で宣言してインスタンス化することができます。私はオブジェクトを作成し、私のVB6の関数内
...がどのようにVB6

Dim fileObj As New MyCSharpClass.FileProperties 

私はすぐに私のC#のFilePropertiesオブジェクトへのアクセス可能なすべての異なる特性を見ることができています。
fileobjの。(インテリセンス)は私にオブジェクト
内部で利用可能なもののドロップダウンリストが表示さしかし、私は関数に私のオブジェクトを渡す...

GetProperties(fileObj) 

私は内部のGetPropertiesの

Public Function GetProperties(ByRef pfileObj As MyCSharpClass.FileProperties) 

ています私はインテリセンスが私に使用可能なオプションを私に示していしようとすると...
それは今私が使用できる変数としてpfileObjを認識しない、それがインテリセンス
に表示されません0手動で入力しようとすると、もう一度intellisenseでオプションが表示されません。

pfileObj. 

それらはVB6の内部にdelcaredれていなかった機能に周りのオブジェクトinterropt COMを渡すための特別な方法はありますか?
これは単純にできませんか?
文字列を返す関数の作成を避け、オブジェクトプロパティに一度に1つずつ割り当てようとしていました。あなたは.NETは、あなたがしてVB6から参照できるタイプライブラリファイルを作成してもらう必要があるため

答えて

0

理由があります。 VB6はこれを使用してIntelliSenseを表示し、VB6でC#オブジェクトを呼び出す方法を支援します。

  1. VB6にアクセスさせるプロパティ/メソッドを公開するC#でインターフェイスを宣言します。
  2. クラス名の後にコロン文字を使用して、C#オブジェクトにインターフェイスを実装します。
  3. 強力な名前のコマンドラインユーティリティを使用して、プロジェクトの厳密な名前を作成します。 (Visual Studio .NETのプロジェクトプロパティでこれを行うことができます)。
  4. コマンドラインユーティリティregasm.exeを使用して、必要なTypeLibファイルを作成します。
  5. gacutilを使用して、新しく作成したtlbファイルをGACに追加します。
  6. はVB6(プロジェクト>参照)から、新たに作成.TLBファイルへの参照を作成します。

詳細な手順については、http://www.codeproject.com/Articles/3511/Exposing-NET-Components-to-COMをご覧ください。記事は古いかもしれませんが、ほとんどの場合、Visual Studioの最新バージョンにはまだ適用されています。

関連する問題