No.2ベストアンサー
- 回答日時:
>ATLで使うものはレジストリに登録する必要があるのですよね?
はい、あります。
>com(ATL)の場合のEXEとDLLの違いってなんでしょうか?(3種類あるみたいですが)
ATLだからというのは関係ないのでおいておきます。
COMの場合、インプロセスサーバ、アウトプロセスサーバという言い方をよくします。
インプロセス、つまり呼び出し元と同一プロセス空間で動作するCOMサーバです。
#呼び出し元をクライアント、呼び出されるCOMコンポーネントのことをサーバと呼びます。
これにあたるのが、ActiveX DLL、ActiveXコントロールのような、DLLとして動作するものです。
逆にアウトプロセスサーバは、呼び出す元とは異なるプロセスとして動作するCOMサーバです。つまり、ActiveXEXEや、ActiveXDocumentsサーバということになります。
#ちなみに、DCOMでネットワーク越しに使用可能なCOMサーバはActiveXEXEのみです。
具体例をあげますと、ActiveXDLLは、ADOやDAO、ActiveXコントロールはVBでよく使われるスプレッドシート、ActiveXEXEとActiveXDocumentsサーバは、ExcelやWord
という感じです。
>EXEの場合、レジストリ登録が必要なく返値が得られない..
>でしょうか。
EXEも登録する必要があります。
DLLの場合は、Regsvr32.exeで登録するのが一般的ですが、EXEの場合は自己登録といって、/RegsterServer(だったかな?)といったオプションをつけて起動することで登録するのが一般的です。
#少なくともMFC、ATL、VBで作成されたアウトプロセスサーバはこのパラメータを受け付けます。
>このreturn S_OKは
>[out,retval] VARIANT *pVal で指定した
>pValを返しているのでしょうか?
>しかしこのretvalがよくわかりません。
>MSDNでみるとretval:メンバの戻り値を受け取るパラメータを指定します。
>となっているのですが。
S_OKは、HRESULTの方になります。
COMのメソッド、プロパティは、戻り値はvoidまたはHRESULTというのが決まりとなっており、HRESULTの場合は成功失敗とその付加情報を返すだけとなっています。
利用する側は、C++ですとFAILEDマクロ、SUCCEEDマクロで成否を判断します。(付加情報があるため単純な比較だとだめなため)
ただ、これだと使い勝手が悪く不便なので、retvalという属性をつけることで、戻り値として扱う値だよという指示をつけてあげます。
VBですと、HRESULTの戻り値がトラップ可能なエラーで、retvalで返される値がメソッドの戻り値というように、読み替えられて扱われます。
VC++で、#importを使ってCOMを使用する場合も、VBと同様な使用方法(retvalを戻り値として扱う)も可能です。
No.1
- 回答日時:
うーん、サイトはどこもいまいちですねぇ。
ウィザードの使い方くらいは書いてありますが、本格的なところはあんまり・・・
ATL プログラミング
なんてキーワードでgoogleといくつかは出てきますが、
どこもそれなり。
本ですとこちらが良いかと。
http://www.amazon.co.jp/exec/obidos/ASIN/4797306 …
http://www.seshop.com/detail.asp?pid=35
私は上のほうのを持っています。もう絶版ですね。
最近は.NETに押されぎみでCOM関連はあまりいい書籍は見当たりませんね。
>「com化しておくと便利」とか聞くのですが
いまいちピンときません。
COMの一番のメリットは、どの言語で作成したCOMオブジェクトも、使う側は作成言語を意識せずに使用可能ということですね。
ASPやVBScript等のスクリプトからも使用可能です。
これは、コンポーネントからの機能の公開の仕方、機能の利用方法がバイナリレベルで厳格に決められているからです。
>DLLとは何が違うのでしょうか?
通常のDLLの場合、公開されるのは関数単位ですが、COMの場合はオブジェクト単位になります。
また、COMの場合、DLLである必要がありません。
EXEでもかまいません。
さらに、コンポーネントが別のPCにおかれていても使用することができます。(これがDCOMになります)
>com,ATL,ActiveXについて、関連があると思うのですが
>その関連についても分かり易くご教授頂ければ幸いです。
COMという言葉自体は、メカニズムそのものをさします。
ActiveXやオートメーションと呼ばれる機能の基本技術です。
ATLはCOMコンポーネントを作るための、テンプレートを使用したC++のフレームワークです。
ActiveXは、COMを使用した技術の総称です。
ActiveXコントロール、ActiveX DLL、ActiveX EXE等があります。
taka_tetsu様ご回答ありがとうございます。
>ActiveXコントロール、ActiveX DLL、ActiveX EXE等があります。
確認したいのですが、
ATLで使うものはレジストリに登録する必要があるのですよね?
com(ATL)の場合のEXEとDLLの違いってなんでしょうか?(3種類あるみたいですが)
EXEの場合、レジストリ登録が必要なく返値が得られない..
でしょうか。
http://www.erde.co.jp/~katsu/com/02.html
をみているのですが
このreturn S_OKは
[out,retval] VARIANT *pVal で指定した
pValを返しているのでしょうか?
しかしこのretvalがよくわかりません。
MSDNでみるとretval:メンバの戻り値を受け取るパラメータを指定します。
となっているのですが。
質問が多岐に渡りますが、もしよければご回答お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学受験 AO、総合型選抜出願時に使用する活動実績報告書について 4 2022/06/27 01:21
- その他(開発・運用・管理) VisualStudioSetup.exeの設定について(Rustのインストールの準備として) 2 2023/04/17 12:54
- 中古パソコン 起動時の黒い背景で白文字の画面 3 2022/10/21 16:11
- 運輸業・郵便業 請求書の郵送方法について教えてください 5 2023/03/27 10:43
- C言語・C++・C# ActiveXコントロールを.NETにインポートできない??? 2 2023/05/02 02:50
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- その他(職業・資格) 『特別管理産業廃棄物管理責任者』修了試験の傾向と対策 1 2023/01/01 01:00
- Java 問題作成のWebアプリの作り方を教えてください 1 2022/11/26 22:01
- 数学 最大エントロピー原理をpythonで実装したい 2 2022/06/21 13:10
- その他(開発・運用・管理) 社内サイトのコンテンツのカテゴリ分けについて教えてください。 いま、社内向けポータルサイトを直そうと 1 2023/04/18 23:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
へんな現象
-
研究室志望の提出文書
-
応用情報技術者試験の令和元年...
-
gccを行ってもexeファイルが生...
-
質問失礼します。 プログラム言...
-
Notepad++の関数リスト表示でC...
-
Windows formアプリで データグ...
-
Linux Cプログラミングを学ぶた...
-
トリプトファンってケト原性あ...
-
c言語
-
MACで動く実行ファイルをWindow...
-
C言語 列挙型(enum型)変数について
-
右ビットシフト
-
mallocについて
-
C言語 配列と関数の練習問題
-
Bitcoin、BTCはブロックチェー...
-
C++6.0でのresource.hについて
-
VisualStudio2022でC言語プログ...
-
大量のデータを読み込んで表示...
-
c言語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラー438でオブジェクトの...
-
ATLについて
-
表示の仕方
-
エラー(型が一致しません。)...
-
VB6でユーザー定義型がNothing...
-
VB.NET の配列の要素数
-
TextChangeイベントが発生しない
-
python: 直角三角形の種類を求...
-
#define 文
-
配列の要素番号を取得するには?
-
c++ cmathとmath.h
-
VBでボタンを押すと画像をラン...
-
ifdefとenum
-
重複しない乱数整数を発生させる。
-
LRESULTとHRESULT
-
変な質問ですみません、n番目の...
-
DataGridでCTRLキーを押さずに...
-
=FREQUENCY(範囲,{59,69,74}) ...
-
fetchでreturnで戻り値
-
プログラム開始から 2秒毎に ...
おすすめ情報