• ベストアンサー

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

hyde-laの回答

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

失礼ですが、クラスをご存知ないのであればCOMは多分 全く理解できないでしょうねぇ クラスについても、ご自分で勉強が必要だとは思いますが 簡単に説明しておきます。 構造体(属性)に、関数(操作)を加え、カプセル化したものです。 従来のプログラミングでは、変数をばらばらに扱わず、 構造体と呼ばれる型に関係ある変数をまとめて、 プログラム中のデータ構造が明確になるようにしておきました。 そこで、この構造体に専属の関数を加えてしまえば、 その構造体は単独で自分の面倒をみることが出来るようになります。 それがクラスです。 その結果、プログラム中のデータや処理が、クラス単位で整理され、 それぞれ部品のように組み替えが可能になりました。 このように、クラス単位にプログラムを分割することで 巨大なプログラムを明瞭にする言語をオブジェクト指向言語といいます。 また、クラスには親と子があり、「継承」という考えを用いて どんどんバージョンアップや特化を行うことが容易です。 VBで説明すると、 Dim value as A として変数を宣言した場合、クラスは「A」です。 valueはオブジェクトや、インスタンスと呼ばれます。 valueを使って、Aに含まれる関数を呼び出して、valueを 操作することが出来ます。 value.Init() 等。 ざっくり説明するとこんな感じです。 詳細については、各言語の書籍を参照してください。 このようにして作ったクラスを、 ・他の言語から使いたい ・ネットワーク経由で使いたい などと言った機能を実現する、Microsoft提供の方法の一つが、 COMやDCOMと呼ばれるものです。 COMは、他のプログラムからの使いまわしに強いので、 一度作っておけば、VB、Delphiは勿論、VBScript、JavaScrips、WSHなどから 呼び出しが可能です。 また、COM自体のバージョンが上がっても、それを呼び出してる プログラム自体には変更の必要がありません。

holydevil
質問者

お礼

ありがとうございました。 非常に丁寧に御回答いただきありがとうございました。 仕事柄プログラムは使わないため、今は分からないことだらけですが、今後ともよろしくお願いします。 (今はASPでWEBアプリを作りたいと思ってます。)

関連する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です。