- - PR -
起動中の.NETアプリケーションにCOMコンポーネントからアクセス
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-24 10:35
自分が混乱したまま書き込んでしまい、失礼しました。
必要なのは、COM オブジェクトと .NET アプリケーションの連携機能です。 今は以下のように整理しています。 今回やりたいことは、プロセス間通信である ↓ 従来は、オートメーションを利用して実現できた ↓ .NETでは、オートメーションをサポートしておらず、他にプロセス間通信の手段が提供されている というわけで、今回必要なのはプロセス間通信(多分リモーティング)だと思います。 いま少し自分の中で理解と整理を深めたいと思います。 ありがとうございます。 | ||||||||
|
投稿日時: 2006-01-24 11:57
Using the .NET Framework Class Library from VB6
http://msdn.microsoft.com/vbrun/vbfusion/usingnet/default.aspx The .NET Framework Class Library (FCL) 呼び出しなら例はあるようです。 検索語は com bridge .net vb6 [ メッセージ編集済み 編集者: MMX 編集日時 2006-01-24 12:01 ] | ||||||||
|
投稿日時: 2006-01-24 18:30
>MMXさん
MSDNと似たような内容かと思ったら、続きがあるんですね。 続きも読んでみます。 情報ありがとうございます。 | ||||||||
|
投稿日時: 2006-01-24 21:27
.NET のクラスをインプロセスサーバとして利用することは、.NET の COM 連携機能により可能です。 ですが、.NET の標準クラスライブラリやランタイムは、アウトプロセスサーバの作成を積極的にサポートしていません。 よって、「COM オブジェクトと .NET アプリケーションの連携」に適用するのは厳しいです。 | ||||||||
|
投稿日時: 2006-01-25 01:26
ええ!!そうなの? 単に「COMオブジェクト」の中で Instanse i = CoCreateInstance(.NETアプリケーションDLL); すればいいだけじゃないの?そうすればふつーに.NETアプリケーションの リファレンスとインターフェイスが取れるはずですけど。(未確認) .NETアプリケーションはふつーにバイナリ生成すると「COMオブジェクト」 と「振る舞い」が一緒ぢゃなかったっけ? もちろんバイナリ自身(そもそもバイナリですらないわけだが)は「COMオブジェクト」 とは似ても似つかないけど。そこらへんはCLRがなんとかする気がする。 プロセス間通信するCOMオブジェクトなんてわざわざ作らなくてもいいはずだけど。。 ちがうのかな。 CLRは「なんでもあり」だと思うなり。 ただ、開発したら最後、保守は無茶だと思うけど。 Dim A As String; A = gcnew System::String(); Console::WriteLine("{0}",A); A->toDateTime(); なんつーソースコードを保守できるとは思えない。。 ちなみに上記はVB.NET + C++/CLI + C#。 | ||||||||
|
投稿日時: 2006-01-25 07:44
できないです。 CoCreateInstance() は COM API で、登場順から考えても明らかなように、COM は .NET のことを知らないため、CoCreateInstance() は .NET のアセンブリから .NET のクラスインスタンスを生成することは出来ません。 似たような動作は、.NET の COM 連携機能によって可能となりますが、その場合は .NET のクラスは「単なる COM オブジェクト」に見えます。 しかも、この機能は前述のようにインプロセスサーバしかサポートしていません。
1つのソース中で複数言語を使用することは出来ません。 現状、少なくともアセンブリを生成する際は1つの言語で記述されている必要があります。 (アセンブリ生成後に、それらを合成することは可能) [ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2006-01-25 07:51 ] |