- - PR -
ActiveX Controls の開発について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-07-02 14:39
情報ありがとうございます。 ActiveX SDKで探してみます。
FlashPlayerみたい新規PCにインストールできるものを作りたいので、 ATLを含めていいのか検討しています。 FlashPlayerもATLを使っているのか、確かめる方法ってあるのでしょうか? | ||||||||
|
投稿日時: 2007-07-02 14:48
難しくないです。現状は、ATLで作成しました。 現状は、ATL80.dllを使っています。 また、ソースも追ってみました。
FlashPlayerみたいに新規PCの初期状態で、実行できるものが要件です。 現状は、ATLで動いているので、問題なくなりました。 しかしながら、自前の実装を行なってみたいと思っております。 clrスイッチは、詳しく理解していないので、使っておりません。 | ||||||||
|
投稿日時: 2007-07-02 16:03
バイナリレベルでサーチすればそれっぽい名前は見えるかもしれませんが... どうですかね?自分で作ったものも含めてチェックしたことはないのでよくわからんです。
引っかかってるのはここですか? であれば、ATL はスタティックリンクできます。 もちろん、CRT のレベルも含めてスタティックリンクが 前提ですので、ファイルサイズは大きくなりますけど。 どこかのコンパイルオプションをいじるだけで設定できますよ。 ところで、FlashPlayer のようなということは、cab+inf で配布できるということですか? であれば、CRT を DLL で配布もOKだと思いますが、問題は inf でのインストールが SxS(Side By Side)に対応しているかどうかですね。 正直、.inf 形式のインストールについては全くと言っていいくらい知らないので できるかどうかもさっぱりわかりませんが。 _________________ // とっちゃん(高萩 俊行)@わんくま同盟 // とっちゃん’Blog // MS-MVP for Developer Tools - Visual C++ // WindowsInstallerの話題はhttp://www.freeml.com/msiまで | ||||||||
|
投稿日時: 2007-07-02 22:37
私が5年ほど前に C++ と Platform SDK のみで作成したソースがあります。 まぁ、参考になれば良いかなと思って私のサイトにアップしました。 www5.plala.or.jp/atata/download/axcontrol.lzh ただし、現状ではIEに必須のインターフェースが実装されていないため、 IEに表示することは出来ません。動作するコンテナはVB6ぐらいだと思います。 これを理解してIEのために拡張する手間を考えると 逆にATLを使うのに何のためらいも感じなくなるかもしれません。 # しかしまぁ、5年前の自分のソースを今見ると稚拙なもんです。 # それが故にサンプルの解析は比較的簡単かもしれませんが・・・。 | ||||||||
|
投稿日時: 2007-07-13 18:37
なるほどですね。 アドバイス、ありがとうございます。 | ||||||||
|
投稿日時: 2007-07-13 18:39
ソースのほう、ありがとうございます。 これを参考にさせていただきます。 | ||||||||
|
投稿日時: 2007-07-13 19:07
こんばんは。
ついでに私も… Atata!!さん ダウンロードさせていただきました。 貴重なソースコードありがとうございます。 大切な資料として保管させてもらいます。 あとIEに必須なインターフェイスって…? 10個以上もインターフェイスを実装しているのに まだ足りないんですね。 [ メッセージ編集済み 編集者: Tdnr_Sym 編集日時 2007-07-13 19:08 ] | ||||||||
|
投稿日時: 2007-07-14 06:08
会社では動かなかったんですが、自宅で動かすと動きますね・・・。 多分セキュリティの問題だと思いますが、詳細は調べてないので謎です。 # 私はIObjectSafetyが必須だと思っていましたが実装なしでも動作しました。 私が仕事で作成したIE用のActiveXコントロールで実装したインターフェースを調べてみましたが、 以下のインターフェースしか実装していませんでした。 ・IConnectionPointContainer ・IOleControl ・IOleInPlaceActiveObject ・IOleInPlaceObject ・IOleObject ・IPersistPropertyBag2 ・IPersistStorage ・IPersistStreamInit ・IProvideClassInfo ・IRunnableObject ・IViewObjectEx 提示したサンプルとは IPersistPropertyBag2 の有無だけが異なりますが、 このインターフェースはそもそもオプションなのでIE上の実行の可否に影響しません。 ただ、レジストリ登録ファイルには、以下の記述を追加しており、 セキュリティ関連の設定を追加していました。 'Implemented Categories' { {7DD95801-9882-11CF-9FA9-00AA006C42C4} {7DD95802-9882-11CF-9FA9-00AA006C42C4} } # これがIObjectSafetyの代わりとなっているわけです。 ちなみに私が仕事でフレームワークを使用しないActiveXコントロールを作成した理由は、 Netscape4のプラグインを同一のDLL内に実装するためでした。 依存モジュールを極力減らすことが本来の目的だったのですが、 どこかで方向性を間違ってしまったようです。 今では分けて実装した方が良かったなと思っています。 そもそも1つのDLLにまとめて実装する意味がないので・・・。 |