VS2008でActiveXの作成がしたい

このQ&Aのポイント
  • VS2008でActiveXの作成を考えている方への解決方法についてまとめました。.NET Framework/MFCを利用せずにActiveXコントロールを作成する方法について解説しています。
  • Visual Studio 2008でActiveX DLLを作成し、Windows OSによって処理を分ける方法について解説しています。XPとVista/7で異なるインストーラを一時領域にダウンロードし、実行する手法を提案しています。
  • ActiveXの作成についての困りごとや糸口について相談されている方へのアドバイスです。メソッドの追加方法や実行の仕方についての参考情報や、OnDraw/InPlaceActivateで描画時に実行する手法の利点と欠点について解説しています。
回答を見る
  • ベストアンサー

VS2008でActiveXの作成がしたい

VS2008でActiveXの作成がしたい Visual Studio 2008で,ActiveXの作成がしたいと考えています.諸事情がありまして,.NET Framework/MFCは利用できません.歴史的にActiveX{,コントロール}が.NET Frameworkになっていったという背景があるにせよです.当方はネイティブC/C++が中心で,VSや.NET,ActiveXについてはほとんど知識がなく,ネットで調べている段階です.今週中にモックを必要としているのですが,(ActiveX関連の)書籍がことごとく絶版で少し途方に暮れています. 現在,ActiveXで,次の内容の作成を目指しています. 1 ActiveX DLLを作成 ※ActiveXコントロールはGUIを含み,EXE/DLLはGUIを含まないと理解しております(間違いがありましたら,ご指摘をお願いいたします) 2 Windows OS(XP,Vista,7)によって,処理を分ける 2.1 XPとVista/7で,異なるインストーラを一時領域にダウンロードし,実行する 2.2 それ以外のWindows OSの場合はダイアログを出して終了 2.3 Windows OS以外は考慮せず 「2」の処理は該当ページ読み込み時に実行されることが望ましく,ボタン押下時の処理としては考えておりません(ボタン押下時などのコントロールの処理方法について記したウェブページは非常に多いですね). MSDNのフォーラムを参考(http://social.msdn.microsoft.com/forums/ja-JP/vcgeneralja/thread/b51332af-bc24-471c-9b69-320c2845f182/)に,メソッドを追加しましたが,これの実行の仕方が分かりません._WinMainのようなmain関数はどこにあるのでしょうか. OnDraw/InPlaceActivateで描画時に実行という手法をとってみたのですが,初期描画時だけでなく,再描画時などにも実行されてしまうため,これは使えないのかなという印象です.また,これらは矩形の描画領域(?)が描かれてしまうため,これもなくしたいと考えています. 少し読み難い文章となってしまいましたが,解決への糸口などありましたら,教えて頂けますようお願いいたします.なお,参考になるURL/書籍なども歓迎いたします.

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

  • ベストアンサー
  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.1

回答にはなってないかもですが・・・ 提示されたURLでの作成方法はMFC等と同じATLを利用した方法ですが、MFCがダメだということだとATLもダメなんぢゃないでしょうか? _winmainなどはexeを作成するときに必要な関数ですから、ActiveX DLLことCOM インプロセスサーバにはありません。まずはその辺を調べたほうがよいかと・・・ あと、MFCが利用できないというのがよくわかりません。「DLLが別途必要だ」、ということであればスタティックリンクすれば済む話ですし・・・

関連するQ&A

  • VBで作成したActiveXの実行について

    HTML上でOBJECTタグを使って、OCXなどを実行できるというようなことはネットで見つけることができたのですが、そのOCXがC言語で作られたものだったり、MediaPlayerみたいなものだったりするので、よくわかりません。知りたいことは・・・ 1.VBで作成したActiveXをHTMLで実行できますか? 2.VBで作成したActiveXをHTMLで実行したことがありますか? 3.HTMLで実行するActiveXを作成する場合、DLLですかOCXですか? 4.VBで作成したActiveXを使用する場合、特に気をつけることがありましたら教えて下さい。 以上、よろしくお願い致します。

  • .NETとActiveXの関係

    c++からブラウザ操作を行うプログラムを作成しています。 その際、.NET版 と ActiveX版を作りましょうという話になったのですが、 .NET と ActiveX の関係がわからず、教えて頂きたいです。 ActiveXは、 ネット関連のコンポーネントや技術と捉えています。 例えば、 WebBrowser コントロール (SHDocVw.dll)も ActiveXに属するという認識です。 対して、.NETは、 端的に言えばマイクロソフトが開発したアプリケーション開発、実行環境とのことですが、 WebBrowser コントロール (SHDocVw.dll)と同じことをしようと思ったら、 System.Windows.Forms.WebBrowser を使ったり、 SHDocVw.dll をimport することになるとおもいます (後者は工夫が必要そうですが) なので、 .NET は、ActiveXを包含しているという風に認識していたのです。 ActiveX コントロールは、.NETのControlクラスを継承しているはずがないので、 Windowsのポインタ(EnvDTE::Windows)ではなく IEオブジェクト用のポインタ( IShellWindowsPtr、 IWebBrowser2Ptr)を使う必要があるものの、 この認識だと、 「.NET版 を作成したら ActiveX版を作っているのと同じ」となので 冒頭の「.NET版 と ActiveX版を作りましょう」と矛盾し、 .NET が ActiveX を包含しているというわけではない?? .NET と ActiveX の関係ってどういう関係?? となり、正しい認識を教えて頂きたいのです。 .

  • VC++6.0で作成されたActiveXコントロール

    まだプログラミングを始めて日が浅いため、馬鹿な質問をしていたら申し訳ありません。 現在、ActiveXコントロールを使ったプログラムを作成しております。 メインの環境がVC++2008なのですが、このActiveXコントロールがVC++6.0で作られた物であるため、VC++2008で使用しようとするとエラーが出てしまいます。 またプログラム中で使っているライブラリの中でVC++6.0で動いてくれないものもあり、私としては慣れないVC++6.0より何とかして2008でこれを使いたいのですが・・・ 一応現在はVC++6.0でこのActiveXコントロールを動作させるプログラム(以下exeと略)を作り、このexeをVC++2008のプログラム内でCreateProcess関数で呼び出すと言う方法を取っています。 引数はコマンドライン引数、処理結果はファイル経由で受け渡しをしています。 このActiveXコントロールというのがあるカメラから画像を取得するものですので、どうして処理時間の長さが気になります。 そこでプロセスの起動と終了にかかる無駄な時間を減らすため、このexeをDLL化できないものかと考えています。 前置きが長くなりましたが、私が質問したいことは (1)「VC++6.0で作られたActiveXコントロール」を使用したDLLを作れるのか?作れるのならばそれはVC++2008で使えるのか? (2)DLL化以外に処理時間を短くする方法はないか?(例えばexeを立ち上げっぱなしにしたまま引数等をメインプログラムとやり取りできないか?) の2点です。 なおこのActiveXコントロールはソースがないため、VC++2008でビルドしなおすと言う手が使えません。 よろしくお願いします。

  • ActiveXの更新について

    VB6.0でActiveX.DLLを作成してサーバ上に配置しています。 それをクライアントで実行しているのですが、 サーバ上のActiveX.DLLを置き換えてもクライアントの 実行結果がかわりません。 ActiveX.DLLを作る際に設定等があるのでしょうか?

  • VS2003とVS2005におけるActiveXの違いについて

    お世話になります。 テンプレートのまま何も追加してない 空っぽのActiveXに署名してFreeBSDに置いて Windowsから実行しようとしています。 ひと月ほど前にVS2003で上記のことを行い、 XPからIE6,IE7,IE8で動作を確認しました。 最近、VS2005で同様のことを行ったところ、 XP+IE6でインストールまで成功するものの、 実行されないという現象が起こりました。 ※インストールの成功は  C:\Windows\Downloaded Program Filesに  入っていることで確認。  また、サーバのHTMLをローカルにコピーすると  正常にActiveXが実行可能。 そこで、もう一度VS2003に戻ってひと月前と 同じ手順でプロジェクトを作ったところ、 新しいプロジェクトで作ったActiveXも、 VS2005版と同じ現象が起こりました。 その際のエラーログは、次のようになりました。 ------------------------ 以下ログ ------------------------ *** Code Download Log entry (26 Jun 2009 @ 13:58:12) *** Code Download Error: (hr = 800c0400) Unknown Error!! Operation failed. Detailed Information: CodeBase: http://www.xxxxx.com/Plain2003.cab CLSID: {DDC859E4-5589-47BF-B14D-71FCEA506810} Extension: Type: LOG: Reporting Code Download Completion: (hr:800c0400 (FAILED), CLASSID: ddc859e4..., szCODE:(http://www.xxxxx.com/Plain2003.cab), MainType:(null), MainExt:(null)) --- Detailed Error Log Follows --- LOG: Download OnStopBinding called (hrStatus = 0 / hrResponseHdr = 0). LOG: URL Download Complete: hrStatus:0, hrOSB:800c0400, hrResponseHdr:0, URL:(http://www.xxxxx.com/Plain2003.cab) LOG: Reporting Code Download Completion: (hr:800c0400 (FAILED), CLASSID: ddc859e4..., szCODE:(http://www.xxxxx.com/Plain2003.cab), MainType:(null), MainExt:(null)) ------------------------ ログ以上 ------------------------ 残っていたひと月前のActiveXに署名を付けて 試したところ、正常に動作しましたので、 署名を付けるプロセスについては問題ないものと 思われます。 一方、プロジェクトを作るプロセスですが、 ・新規 - ATLプロジェクト ・ソリューションエクスプローラを右クリック  追加 - クラスの追加 - ATLコントロール をしているだけです。 本当に同じように作っているか、心配なので、 ディレクトリごとDiffを取ってみると... ぜ~~んぜんちが~~~う。 とても同じ手順で作ったとは思えません。 後からVS2005を入れたせいで、 VS2003がおかしくなったのではないかと 思うくらいですが、 私が間違っているかもしれません。 目的はVS2005で動作するActiveXを作ることです。 この現象について何かお気づきの点があれば ご教授願います。

  • スクリプトやactivexコントロールを実行しな

    スクリプトやactivexコントロールを実行しないよう IEで制限しています 解決方法はありますか? NET Framework 4.0をインストールしたいのですが スクリプトやactivexコントロールを実行しないよう ieで制限しています とエラーログが出ます ActiveX フィルターを解除し ActiveX コントロールとプラグインの実行 と Java アプレットのスクリプトと アクティブ スクリプトの項目をそれぞれ  有効に設定しましたがダメです どうすればいいですか?

  • ActiveXコントロールの作成(VB6)

    こんばんは。 今、VB6でActiveXコントロールを作成しようと思っています。 現在、標準EXEにて、プログラムが作ってあります。 動作としては、 1.スタートボタン(CmdStart)で開始 2.処理(外部の測定器によるデータ収集) 3.終了ボタン(CmdEnd)にてプログラム終了 です。 これをもとに、ActiveXコントロールを作成したいです。手元にある文献にしたがってほぼコピー&ペーストで作成しました。また、これの動作を調べるため、標準EXEのフォームを作成し、そのフォームにActiveXコントロールを貼り付けました。 ここで質問です。 Form_LoadはUserControl_Initializeに書き換えました。(これは文献に載っていました) 最後のプログラム終了がうまくいきません。 標準EXEでは Private Sub CmdEnd_Click() Unload Me End Sub と書いてプログラムを終了させていました。 ここを書き換えずにActiveXコントロールを実行させたらエラーが出ました。"Unload Me"を"End"に書き換えてみたら、サポートされていないと出ました。 CmdEndをクリックしてプログラムを終了させるにはどう書けばいいでしょうか? よろしくお願いします。

  • ActiveXコントロールが効かない!

    W2000です。フォルダをクリックすると、現在のセキュリティの設定ではこのページのActiveXコントロールは実行出来ませんと出てしまいウィンドウ上のフォルダが全て開かなくなりました。セキュリティの設定をいろいろさわってみても受け付けてくれないし、スピードも遅いんです。それに再起動した時にはDLLがありませんと毎回でるし....分配した方のMACは調子いいんです。どなたかActiveXコントロールをDLするとこをご存じありませんか?

  • ActiveXがおかしい・・

    OSがWIN95のパソコンをリカバリーCDで、再インストールしました。 IEが4.Oに戻っていたので、マイクロソフトのダウンロードページからアップデートしてIE5.5SP2にしました。さらにWINDOWSをアップデートしようとしたのですが、現在のセキュリティ設定ではActiveXコントロールでは実行できませんという表示がでてアップデートできません。  インターネットオプションでActiveXを有効に設定しても同じ結果がでます。  どうしたら、ActiveXを実行させられるようになるでしょうか  よろしくお願いします。

  • ActiveX DLL と ActiveXコントロールの違い

    VB6で開発をしています。 複数のEXEファイルを使用するシステムです。 各EXEファイルの共通のモジュールをライブラリ化しようと思っています。 これは [ActiveX DLL] 又は、[ActiveXコントロール] のどちらでも実現できると思うんですが、どちらで作成した方が良いのでしょうか? それぞれのメリット、デミリットを教えて下さい。