DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB、C#でのActiveX、COMの開発が可能か?

環境/言語:[OS : Windows 2000 Professional / 言語 : C++]
分類:[.NET]

【解決したい問題】

はじめまして。ぽこぶびと申します。
現在、VisualStudio2003のC++を使って
COM、ActiveXコンポーネントを開発しておりますが
いくつか疑問があるので質問させてください。

C++での開発はぜんぜん問題ないのですが、
VisualStudio2003でVB、C#でも
C++のようにActiveX、COMコンポーネントの開発は
可能なのでしょうか?

もし、可能なのでしたら、新規プロジェクトを作成するときに
どのような手順で選択していったらスケルトンコードが作成されるので
しょうか?

どうかよろしくお願いいたします。
> VisualStudio2003でVB、C#でも
> C++のようにActiveX、COMコンポーネントの開発は
> 可能なのでしょうか?

見かけ上可能です。

.NET と COM では実行原理がまったく異なりますが、.NET の「COM 相互運用」機能を利用して、.NET のクラスを coclass として公開することが可能です。

ですが、旧 VB や VC++ で作った「真の COM コンポーネント」とは、使い勝手等に微妙な差があります。

詳細は MSDN Library の「.NET Framework 開発者ガイド」の「相互運用性」以下のトピックで解説されています。

> もし、可能なのでしたら、新規プロジェクトを作成するときに
> どのような手順で選択していったらスケルトンコードが作成されるので
> しょうか?

いわゆる「ActiveX コントロール」や「ActiveX DLL」基本のプロジェクトタイプは「クラスライブラリ」になります。

ActiveX コントロールの場合は「ユーザコントロール」を、ActiveX DLL の場合は単なる「クラス」をプロジェクトに追加し、COM 連係用の属性で適切にマークを行います。

プロジェクト設定に「COM 相互運用に登録」のような項目があるので、これを有効化してビルドするか、ビルドしたアセンブリを regasm.exe ユーティリティでシステムに登録すると、.NET のユーザコントロールやクラスを COM から利用することができます。

なお、旧 VB で言う所の「ActiveX EXE」の作成を、.NET および標準ライブラリは積極的にサポートしていません。

OLE/COM によほど精通していない限り、.NET なプログラミング言語による ActiveX EXE の記述は不可能と考えるのが妥当です。

DOBON.NET | プログラミング道 | プログラミング掲示板