- ベストアンサー
ActiveXコントロール(ocx)のダウンロードに関する問題
- Activexコントロールのダウンロードに関して問題が発生しています。開発環境と実行環境のOSはXPであり、実行環境では問題なく動作しますが、ブラウザ上では正常に動作しません。
- 現在ActiveXコントロールのアプリを作成しており、デバッグ環境では正常に動作しますが、OCXファイルを作成してブラウザ上で実行すると何らかの問題が発生します。
- IEのセキュリティはActiveXのダウンロードを許可しており、OCXファイルはダウンロードされますが、インストールされず状態が不明です。修正前の状態からOCXファイルを再作成しても問題は解決されません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
何はともあれ動作するようになったとのことで、良かったです。 さてclsidの件ですが、「他のソフトウェアから見て使用方法が同じに見えるプログラムに対しては同じclsidを割り振る」のが基本です。例えば、従来のプログラムに不具合があり、プロパティ・メソッド等のインターフェースは変更しないが不具合だけは解消したという場合はclsidは変えませんが、機能を追加してプロパティやメソッドが増減したような場合にはclsidを変えます。 <object>タグ内のclsidを変更したところ動作するようになったとのことですが、そうだとすれば、全く同じ状態で<object>タグ内のclsidとOCX内に記述しているclsidを元の値に戻し、レジストリに登録されたclsidも以前の値にすればやはり同じように動作するはずです。当初clsidを同じにしても変更しても動作しなかったのは、おそらく開発の手順が整理されていなかったため、適切な段階でOCXのレジストリへの登録作業が行われなかったためではないかと思います。
その他の回答 (2)
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
「そんなこと当然じゃないか」と憤慨されるかもしれませんが、念のため何点か確認させてください。 (1) 「デバッグ環境では正常に動作するのですが、OCXファイルを作成して、ブラウザ上で実行するとどうもうまくいきません。」という点ですが、ここでいう「デバッグ環境」と「ブラウザ上で実行」では、全く同じOCXファイルを使用しているのでしょうか。 (2) 「デバッグ環境」と「ブラウザ上で実行」は、具体的にはどのように違っているのでしょうか。例えば、デバッグ環境とブラウザ実行環境は物理的に異なるPCでしょうか。あるいは、デバッグ環境とはブラウザを使用しない何らかのテスト環境で、同一PC上でもブラウザを使うとうまく動かないのでしょうか。 (3) 質問の中に「修正前の状態から再度OCXファイルを作成するだけでも動かない。」とありますが、ソースファイルやプロジェクトファイル、コンパイルオプションに一切修正を加えずにただリビルドしただけのOCXファイルでも動作しないのでしょうか。 (4) デバッグビルドとリリースビルドの両方とも動かないでしょうか。それとも、どちらか一方は動くでしょうか。あるいは、特定の環境であれば動く場合があるでしょうか。 (5) OCXの登録操作はどのように行っているでしょうか。登録用のinfファイルは別途用意されているでしょうか。
補足
xcrOSgS2wYさん、返答ありがとうございます。 まず返答から。 私の説明不足ですいません。 (1)まったく同じOCXファイルです。 (2)同じPCです。 (3)そうです。 (4)逆に質問させていただきたいのですが VS6.0のOCX作成時にその指定をどうするのですか? (知識不足ですいません、たしかVS.netではあったとおもうのですが・・・。) (5)infファイルは用意していません。 それで xcrOSgS2wYさんのご指摘をうけ、自分なりに 問題点の整理ながら考えていたら 動くようになりました。 修正した箇所は(5)で指摘していただいた OCXの登録操作のところが間違えていました。 具体的に言うと<object>タグに書く clsidが間違えていました。 修正したときはclsidをリナンバーしたのですが、 (本来はリナンバーせずにうまいこといくと思ってま した。) リナンバーをGUIDGEN.exeを直接実行してナンバリン グしていたのですが、レジストリの中からプロジェ クト名+コントロール名で登録された項目から GUIDを引っ張ってきたら、うまいこと動くようにな りました。(これって当たり前のことなんですよ ね?) まだ自分では納得行ってない部分があるのですが、 そもそも ActiveXコントロールを修正する場合は、そもそも clsid(GUID)をリナンバーしなければいけないものな んですかね? リナンバーしなければならいのであれば、 まったく別のアプリという扱いになるので バージョン管理って意味がないと思うし、 結果的に動くようになりましたが、 動かなかった原因? 今回の自分の修正方法が正しいのか? 間違ってるのか? たまたまうまく動いただけなのか が自分では判断できません・・・。 今回の私の修正方法 clsidを振りなおすというのは ただしいのでしょうか?
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
おおもとのOCXはどのような環境で、どのようにして作成したものなのでしょうか。 その環境や作成方法との違いを確認してみてはいかがでしょうか。
補足
xcrOSgS2wYさん、回答ありがとうございます。 実は初期の開発環境(マシン)は 手元にはなくて win2000(sp3) visualstudio6.0(sp5) であろうと想像しか出来ません・・・。 一応その開発環境を再現して OCXを作成してもうまいこといきませんでした・・。 作成方法もロジックも2,3行追加しただけなので 特に変わらないとおもっています。
お礼
なるほど、おっしゃるとおり バタバタしたまま開発を進めててました。 次回からは今回のことを教訓にします。 xcrOSgS2wYさん、本当にありがとうございました。