none
Visual Studio .NETでのActiveXコントロール作成について RRS feed

  • 質問

  • Visual Studio .NETでVisual C#を使用して、ActiveXを作成することはできるでしょうか?

    Visual Studio .NETのプロジェクト作成メニューを見ると、C++のみがActiveXコントロール作成が可能のようですが、どうなのでしょうか?

    よろしくお願い致します。

    2006年6月19日 2:03

すべての返信

  • かず999様

    そもそも、C#で作成したコードは実行時にCLRがコンパイルし実行します。

    ActiveXはCLR上で動作するわけではないのでC#での作成は出来ないのではないかと思います。

    C++でもMFCを選択しないと、ActiveXコントロールは作成できませんよね?


    まこちん

    2006年6月19日 4:30
  • ActiveXの定義を(念のため)調べたところ
    • どのOLEコンテナでも実行できる
    • インプロセスサーバとして実装されている
    • プロパティのset/getにより情報を伝達する
    • イベントを利用して通知を行う
    • 比較的小さなオブジェクト
    といった COM コンポーネントを指すようです。
     
    最初の項目が微妙に満たせない条件が存在しますが、普通にクラスライブラリとしてC#でクラスを作成し、ComVisibleAttribute と GuidAttribute を設定してあげれば、レジストリに登録して上記のような COM コンポーネントとして利用することができるので、動作環境に多少の制限が発生するが ActiveX は作成可能だとしてもよさそうですね。
    #.NET Framework が必要かつ、互換性のない CLR がロードされていないこと、かな?
     
    .NET Framework 開発者ガイドの中の「COM インターフェイスのシミュレート 」あたりが該当します。また、Internet Explorer 上で利用するのみなどであれば、Notouch Deployment の説明等にあるように Object タグで直接 .NET の UserControl などを指定してブラウザ上に表示したりもできます。
     
    2006年6月19日 4:33
  • 回答ありがとうございます。

    C++ではMFC ActiveXコントロールを作成するメニューからネイティブコードのActiveXを作成できるので、C#でもできないかと思ったわけです。

    Visual Studio .NETを使用する場合は、ActiveXを作成できる言語はC++のみだと調べてわかりました。

     

    2006年6月19日 4:38
  •  Lady.BUG さんからの引用
    最初の項目が微妙に満たせない条件が存在しますが、普通にクラスライブラリとしてC#でクラスを作成し、ComVisibleAttribute と GuidAttribute を設定してあげれば、レジストリに登録して上記のような COM コンポーネントとして利用することができるので、動作環境に多少の制限が発生するが ActiveX は作成可能だとしてもよさそうですね。
    なるほど、C#でもActiveXは作成できるのですね!!知りませんでした。勉強になりました。
     

    まこちん
    2006年6月19日 5:51