- PR -

[VB.NET+VB6+IIS] OCX(ActiveX)を、VB.NETから動的に参照したい。

1
投稿者投稿内容
うきょきょ
常連さん
会議室デビュー日: 2004/01/09
投稿数: 44
投稿日時: 2006-11-20 14:43
[今まで]
・ローカルマシンにOCX(COM)をインストールし、objectタグを利用してローカルマシンのOCXを使用する
 →IISサーバにはOCX等は置かない
 →OCX自体はVB6で作成

[やりたいこと]
・OCXをVB.NET2005のWindowsフォームコントロール(以下wf_ctl)に、順次移植していく予定です。
 →現在の段階では一部を移植し、残りは既存OCXを流用する。
  →COMの相互運用機能をチェック
 →(IEに表示する)wf_ctlのプロジェクト参照に、OCXを追加することは出来ますが、
  実際にIEから表示しようとすると例外が発生します。
   →下の「CLASSIDエレメントを変更」した時にプロジェクト参照から外しました。

[試したこと+調べたこと](見当違いがあるかもですが^^;)
・gotdotnet等でobjectタグのCLASSIDには"http:AAA.BBB.dll#AAA.BBB"と指定し、IISの物理フォルダにDLLを入れておく
 →「IISサーバにはOCX等は置かない」に違反するが、許容範囲と考えた
・wf_ctlに直接OCXを貼り付け
 →System.IO.FileNotFoundExceptionが発生
  ※IEのセキュリティ ポリシーは、信用済みサイトになってます。
  ※コード アクセス セキュリティ ポリシーは、FullTrustになっています。
・CLASSIDエレメントの"http:AAA.BBB.dll#AAA.BBB"を"AAA.BBB.dll#AAA.BBB"に変更しても動くのを確認
 →regasmしました。
・ここの過去ログから、System.Refrection.Assembly.Load〜等でアセンブリ(といってもOCX)をロード
 →System.BadImageFormatExceptionが発生
  ※OCXをそのままアセンブリをロードしようとしたのでが原因だと推測していますが、解決方法がわかりません。
   →tlbinpやtlbexpもダメ

よろしくお願いします。

P.S.
元VB6のソースはありますので、あまり変更したくありませんが、修正する事は可能です。
−−−
タイトルを変更

[ メッセージ編集済み 編集者: うきょきょ 編集日時 2006-11-20 15:41 ]
うきょきょ
常連さん
会議室デビュー日: 2004/01/09
投稿数: 44
投稿日時: 2006-11-20 18:31
引用:

   →tlbinpやtlbexpもダメ


AxImpでした。

タイプライブラリだとばっか思ってたのですがAxHostを使って、
Ax($ライブラリ名).dllを参照後に出来るようになりました。
#BeginInit〜EndInitも忘れずに・・・
1

スキルアップ/キャリアアップ(JOB@IT)