• ベストアンサー

COMコンポーネントって何?

hyde-laの回答

  • hyde-la
  • ベストアンサー率28% (42/146)
回答No.4

ごめんなさい、説明が抜けました。 COMの特徴についてですが・・・ ・インターフェイスの統一的な呼び出し手段がある ・参照カウンタを持つ という重要な二点のことを説明忘れてました。 COMは、クラスオブジェクトですので継承によって さまざまなインターフェイスが追加されて行きます。 それらを統一的に呼び出す手段として、QueryInterface メソッドが存在してます。 参照カウンタは、COMが参照されるたびにインクリメントし 解放されるとデクリメントするカウンタ値です。 これが0になった時にメモリから削除されます。 Javaをご存知でしたら、GarbegeCorrectorと考えると分かり易いと 思います。 要するに、C++でも容易にメモリリークを防げる仕組み、と。 実際にCOMを作ってみるのでしたら、やはり書籍があると 助かると思います。 VBだと私はちょっと解りません。(簡単に出来ると思いますが)

holydevil
質問者

補足

クラスオブジェクトってふつうのオブジェクトと何が違うのでしょうか?あと、バイナリってなんですか? 超基本的な質問ですみません。

関連するQ&A

  • COMコンポーネントファイルが参照できない。

    現在VisualBasic2010expressを使っています。 オーディオの録音用プログラムを作りたいと思い とあるホームページからwave入出力用のCOMコンポーネントファイル(.ocx)をダウンロードしました。 E:ドライブの「system32」の中に入れVBから「ツール→アイテムの選択→COMコンポーネント→参照」と操作しsystem32に入ってる目的のファイルを探したんですがどこにも見当たりません。 VBではなく普通に「sysytem32」を開いた場合は目的のファイルはきちんと存在します。 またVB上でも「system32」上ではなく「system」のフォルダに置いた場合は参照できます。 なぜ「system32」上だと参照できないんでしょうか? 読み取り専用、隠れファイル等もチェックを外してみたのですが変わりませんでした。 VBでファイル名を示し実行した場合は「そのファイルは存在しません」となります 使用しているOSはWindows8です。8が原因何でしょうか? 初歩的な質問で申し訳ありません。

  • COMコンポーネント・・・?

    Windows終了時にいつもCOMコンポーネントのインストール中というのが表示され、“すぐに終了”というボタンを押さない限り正常終了できません。 COMコンポーネントとは一体何なのですか?

  • BluetoothのCOMポートの変更方法(COM16以下に)

    Princetronのブルートースアダプターを購入しました。 セットするとCOM40になりました。 VBのCOMコンポーネントのポートNoは最大でCOM16までです。 どうしたらCOM40を16以下にできるでしょうか。教えてください 新規接続の設定では40から62までの範囲でしかできません。

  • コンポーネントについて

    VBでコンポーネントを使用する際、使用者がそのdllやocxファイル等を持っていない時のために、実行ファイルと同じディレクトリに必要なdllやocxを置いて、それを利用してコンポーネントを使用したいと思うのですが、どうすればよいのでしょうか?わざわざsystem32にコピーするのは面倒ですので。。

  • ダイアル型の部品コンポーネントってありますか?

    お客様の要望で、見た目がダイアル型のツマミのようなインターフェースにして欲しいとの要望があがり困っています。 このようなコンポーネントが用意されている言語はありますか? 実際、B'sPlayerやPowerDVDなどの動画再生ソフトでは、このようなインターフェースが実装されているようです。 マウスでドラッグすると値が増減するような部品が欲しいのです。 言語はVBやJavaだと助かります。 ちょっとあいまいな質問になってしまったようですが、よろしくお願いいたします。

  • コンポーネントの追加ができません

    Win2000ProでVB6.0を使用しています administratorではコンポーネントの追加ができるのに、Win2000Serverに登録された一般ユーザではコンポーネントの追加ができません 一般のユーザでコンポーネントの追加ができるようにするにはどうしたらいいのでしょうか?

  • COMコンポーネントの構造の本質的理解ができない

    プログラミングを始めて間もない初心者です。 windowsアプリケーションを制御対象として扱おうと、win32oleライブラリをrequireしてCOMコンポーネントを扱う方法をネット上で色々調べてみたのですがどうも腑に落ちない点・分からない点があるので質問します。 rubyリファレンスマニュアルからリンクされているサイト(http://jp.rubyist.net/magazine/?0003-Win32OLE)において、以下のような記述があります。 >COM ではインスタンスを生成するときに「COM コンポーネント」を指 >定するための ProgID を引数として WIN32OLE.new メソッドを実行し >ます。 COM コンポーネントとは、Windows に登録された、ある機能 >(たとえば、IE や MS Office の制御機能) を提供するためのもので >す。この「COM コンポーネント」を利用して作成したインスタンス を>「COM オブジェクト」とこの記事では呼んでいます。 COM オブジェク>トを作成した後は、その COM オブジェクトで定義されている「メソッ>ド」を実行することでそのコンポーネントが提供する機能を実現する >ことができます。 この文に従えば、作成したCOMオブジェクトを扱う方法を知るためにはCOMオブジェクトで定義されているメソッドを参照すれば良いこととなります。そこで自分もWIN32OLE.new("InternetExplorer.Application") によって得たCOMオブジェクトにWIN32OLE.ole_methodsを適用することでメソッドの一覧を取得しましたが、前述のサイトで紹介されているie.document.all.Item()というメソッドを探してみてもどこにも見つかりません。 これはどういうことなのかと思い、ネット上で色々とCOMとは何か、タイプライブラリとは何かなどを調べて見ましたが、いまだCOMの全体像の把握ができません。 たとえばrubyの場合、あるオブジェクトに対して使えるメソッドというのはそのオブジェクトが該当するクラスに於いて定義されているメソッド((1))及びkernelモジュールで定義されている組み込みメソッド((2))ですよね。 (初心者なのでこの理解にも間違いがあるかもしれませんがその場合はご指摘お願いします) このような考え方でいくとWIN32OLE.ole_methodsによって取得したメソッドの一覧は(1)にあたり、document.all.Item()というのは(2)にあたるのではないかという考えもできるかと思うのですが誰か正しい理解をご教授いただきたいです。 質問が長くなってしまいましたがie.document.all.Item()というメソッドがどこに定義されているのか、そういったメソッドの定義場所はCOMにおいてどのように見つけるのか、そこだけでもいいのでよろしくお願いします。

    • ベストアンサー
    • Ruby
  • VC++6.0でMSCommコンポーネントを使う方法

    こんにちは。 VC++6.0でMScommコンポーネントを使いたいのですが どのようにすればMSCommのコンポーネントが使えるのでしょうか? VB6.0での使い方は判ったのですが、VC++6.0での使い方が 判りません。 よろしくおねがいたします。

  • VBのコンポーネントについて

    Visual Basicのコンポーネントの『Activex Data Object 2.5 Library』を使いたいのですが・・・ないのです。VersionはVB6.0 Enterpriseを使ってます。学校で使った時は(バージョンは違うと思うですが。多分Professionalだとおもうのですが)コンポーネントの項目にありました。Versionがかわると機能もつかわるのでしょうか?『Activex Data Object 2.5 Library』を使いたい場合どうすればいいのでしょうか?

  • [VB5] RDO:エラー'429' ActiveX コンポーネントはオブジェクトを作成できません

    Excel97のVBAを使って、RDOでSQLserverに接続しようとすると 「ActiveX コンポーネントはオブジェクトを作成できません」 というエラーがでます。 VB5.0を再セットアップするとよいと以下のURLにはのっていますが http://www.microsoft.com/japan/support/kb/articles/J043/1/96.asp VBがインストールされていないマシンでは、どうしたらよいのでしょうか? RDOのバージョンは2.0です。