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

ActiveXコントロールを.Net4で実行する方法

環境/言語:[OS : Windows 7 / 言語 : Visual Studio 2010 C# / .NET Framework : 4]
分類:[.NET]

【解決したい問題】
色々なサイトを数日かけて調べましたが、
これといった回答を見つける事が出来ませんでしたので、
質問させて頂きたいと思います。

現在、activeXコントロールの .Net FrameWork 1.1.4322 →
.Net FrameWork 4.0 へのバージョンアップについて調査をしています。

Webより、activeXのDLLをダウンロードし、
クライアントにて、DLLを実行するという簡単な物ですが、
.Net FrameWork 1.1.4322のDLLを
.Net FrameWork 4.0をターゲットにしてビルドし、
Web上にDLLを上書きという形で、試してみたのですが、
ブラウザのキャッシュ上にはDLLが落ちてくるのですが、
実行されない状態で困っています。

サイトのHTMLについては、普通に、
<object id="Sample" height="600" width="800" classid="Sample.dll#test.hoge">
<param 〜 />
</object>
と記述し、
caspol.exeにて、対象サイトに対して、FullTrustの設定をしています。
caspol.exeについては、.Net 2.0に対してと4.0について、
両方共に同じ値を設定しています。

そこで本題なのですが、
.Net FrameWork 4.0について、
ActiveXコントロールの実行は出来ないのでしょうか?
出来ないので有れば、その理由を知りたい(報告書にまとめるので)です。
また、出来るのであれば、どのように解決すれば良いのか、
ご教授して頂ければ幸いです。

【解決するために何をしたか】
.Net FrameWork 1.1.4322のActiveXコントロールに対して、
ターゲットを、2.0、3.0及び3.5で各々リビルドをして、
Webにアップして、実行出来るか確認した所、
いずれも問題無く、DLLがダウンロードされ実行する事は
確認が取れています。

また、簡易的なテキストボックスのみを表示するActiveXコントロールを
作成し、.Net FrameWork 4.0 以外で実行可能、
.Net FrameWork 4.0 では、実行出来ないという確認は取れています。

さらに、デバッグ用にexeファイルから、ActiveXのDLLを呼び、
ローカル端末上にて、実行出来る事の確認も取れています。

以上、ご教授の程、宜しくお願い致します。
■No31396に返信(イノさんの記事)
> 現在、activeXコントロールの .Net FrameWork 1.1.4322 →
> .Net FrameWork 4.0 へのバージョンアップについて調査をしています。

それって、ActiveX コントロールではなく、.NET で作成したコントロールを IE 上で実行できる仕組みではありませんか?
ActiveX とするためには COM として公開している必要があるのですが、そういったことをしているのでしょうか?

この記事で書かれているようなことをしてるだけなら、それは ActiveX コントロールではありませんので、用語にご注意ください。
http://japan.internet.com/developer/20051220/25.html


なお、この仕組みは .NET 4 で廃止になっていますので方法はありません。

.NET Framework 4 への移行に関する問題
http://msdn.microsoft.com/ja-jp/library/ee941656(v=vs.100).aspx
「Internet Explorer でのコントロールのホスティング」
"Web でコントロールをホストするための優れたソリューションが存在するので、Internet Explorer で Windows フォーム コントロールをホストすることはできなくなりました。このため、IEHost.dll および IEExec.exe アセンブリは .NET Framework から削除されています。"
Azuleanさん、早速の返信有難う御座います。

>>現在、activeXコントロールの .Net FrameWork 1.1.4322 →
>>.Net FrameWork 4.0 へのバージョンアップについて調査をしています。
>
> それって、ActiveX コントロールではなく、.NET で作成したコントロールを IE 上で実行できる仕組みではありませんか?
> ActiveX とするためには COM として公開している必要があるのですが、そういったことをしているのでしょうか?

その通りです。

> この記事で書かれているようなことをしてるだけなら、それは ActiveX コントロールではありませんので、用語にご注意ください。
> http://japan.internet.com/developer/20051220/25.html

ActiveXとばかり、考えていました。
それで、サイトを探していたので、見つからなかったのですね。
ご指摘有難う御座います。
まさにやりたい事は、上記サイトに記載して有る物です。

> .NET Framework 4 への移行に関する問題
> http://msdn.microsoft.com/ja-jp/library/ee941656(v=vs.100).aspx
> 「Internet Explorer でのコントロールのホスティング」
> "Web でコントロールをホストするための優れたソリューションが存在するので、Internet Explorer で Windows フォーム コントロールをホストすることはできなくなりました。このため、IEHost.dll および IEExec.exe アセンブリは .NET Framework から削除されています。"

上記サイトの情報有難う御座います。
やはり、出来なくなっているのですね。

ユーザーより、今までの使用感でアップデートを行って欲しいとの要望が有り、
Webから、各々表示したい画面に遷移し、それに対応したクラスを呼び出す仕様を
変えないで欲しいと言われているのですが、無理そうですね。

SilverlightやXBAPについて、要検討してみたいと思います。

アドバイス、有難う御座いました。
解決済み!
■No31398に返信(イノさんの記事)
>>ActiveX とするためには COM として公開している必要があるのですが、そういったことをしているのでしょうか?
>
> その通りです。

この答えが気になりました。
「COM として公開」とは、「ComVisibile」属性などを使って使用可能なインターフェース・クラスを公開し、レジストリに登録して Visual Studio, VBA などから参照できるようにするということです。
今回の件とは直接関係しませんが、どういった技術・アプローチを指しているか、一度お調べいただいた方がよいかもしれません。
解決済み!
2013/03/13(Wed) 11:37:07 編集(投稿者)
2013/03/13(Wed) 11:36:55 編集(投稿者)

■No31399に返信(Azuleanさんの記事)
> 「COM として公開」とは、「ComVisibile」属性などを使って使用可能なインターフェース・クラスを公開し、レジストリに登録して Visual Studio, VBA などから参照できるようにするということです。
> 今回の件とは直接関係しませんが、どういった技術・アプローチを指しているか、一度お調べいただいた方がよいかもしれません。

ご教授有難う御座います。

知識の向上の為に調査してみたいと思います。
他のアプリにて、cabファイルにて、web上からダウンロード、インストールを行い、
クライアント側にて、アップロードするファイル形式をVBAで確認するといった事を
行っているシステムも有りますので、そこの仕組についても
知識の補完をすると考えると今の段階で調査しておいて損は無いと思います。
解決済み!

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