• ベストアンサー

VB2005でActiveXを作成したいです

はじめまして。 VB2005でActiveXのCOMを作成したいですが、 新規作成プロジェクトに ActiveXコンポーネントの項目がありません。 どのようにして作成するのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.3

参考URLを見てみてください。 COMにするには、属性やプロジェクトのプロパティを設定するなどいくつかやるべきことがあるようです。

参考URL:
http://ameblo.jp/otsubone-pg/entry-10181634523.html
mindeyed
質問者

補足

コメント有難うございます。 つまりOCXは.net対応しておらず、 COMとして形式変換しないといけないんですね。。。 なんともやりづらいです。 それならダウングレードのVB6.0で開発した方が早そうですよ・・・

その他の回答 (2)

回答No.2

思いつく限りのチェック項目を。 COMで公開するクラスのCOM参照とCOMクラスがTrueになっているか、またプロジェクトの設定で「アプリケーション」グループの「アセンブリ情報」を開き、「アセンブリをCOM参照可能にする」にチェックが入っているか確認してください。 .NET Framework 2.0用のRegAsm.exeを使っていますか? C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe RegAsmは各.NETバージョンごとにありますので、異なるバージョンでは登録が失敗します。 Express Editionの場合、タイプライブラリの不足でエラーが発生することがあるようです。これは#1の参照URLを。 あと、エラーは日本語で表示されるはずなのですが日本語ランゲージパックでインストールされているでしょうか?(これは関係ないかも…)

mindeyed
質問者

補足

あの後、色々行いOleViewにて登録を確認しました。 しかし、実際に登録したDLLをVC++で使用してみたところ、 DLL読込時に失敗してしまいます。 VBでOCXのようなGUI要素をもったACTIVEXを作成したいのですが、 この場合、上記の方法で合っているのでしょうか?

回答No.1

プロジェクト自体は「クラスライブラリ」で作成し「COMクラス」を追加してください。 COM公開に必要なGUID等がソースコードに書き込まれています。 あとは普通にクラスを作ればOKです。(ご存知かと思いますが、COMではオーバーロードや引数付きコンストラクタが使えないのでご注意を) .NETで作成したCOMオブジェクトは当然.NET Frameworkが必要になります。また、レジストリへの登録もRegsvr32.exeではなくRegAsm.exeを使います。 COMの登録はこのへんが参考になるかと。 http://okwave.jp/qa4260192.html

mindeyed
質問者

補足

お返事有難うございます。 無事DLLを作成出来ましたが、 RegAsm.exeで 以下のエラーが発生します。 「RegAsm error:Failed to load 'xxx.dll' because it is not a valid. NET assembly」 .NETでコンパイルしたのですが、ロード出来ないようです。。。 何かよい解決策はございますか?

関連するQ&A