[若干誤った解釈もあるかもしれないのでご注意ください] いきなりCOMって何ぞ?という話なのですが COMとはComponent Object Modelの略で Microsoft社が提唱する、部品化されたプログラムを作成・利用するための基盤となる技術仕様のことを指します。 (プログラミング言語とかライブラリとかでなく、あくまで仕様なので注意。) VBやC#などは.Net Frameworkという巨大なフレームワークの上に成り立っているのですが その前進・基盤となっているのがCOMです。 COMの仕様に基づいてデータのやりとりができるプログラム部品のことをCOMコンポーネントと呼びます。 COMコンポーネントは開発に使った言語やコンポーネントのある場所などに拠らず、 どの言語からでも、どこからでも利用することができます(ただし、Windows OS前提)。 また、Internet ExplorerやMicrosoft OfficeなどもCOMで作られているため 各COMコンポーネントの使い方がわかれば その機能を自分のプログラムで利用することもできるようになります 早い話が名目上 VC++、VB、VC#どれでもCOMコンポーネントを作成できて、利用することができるということです ちなみに.Net Frameworkに乗っかっているVBとVC#はほぼ完全に互換性があるため VBのプログラムはVC#のプログラムに書き直せます。 (逆もしかり・・・) 少し正確に書くとVC++に関しては.Net Frameworkに乗っからずに書けるので そのようなプログラムコードをアンマネージド(ネイティブ)コードと言います。 例えば、C言語初心者が習う #include <stdio.h> int main(){ return 0; } などはネイティブコードです。 逆に.Net Frameworkに乗っかっているコードをマネージドコードと言います。 VBやC#に関しては.Net Frameworkに乗っかっているのが前提なので必然的にマネージドコードになります。 VC++でマネージドコードにするにはCLR環境でプログラムを作成します(CLR環境に関しては気力があればそのうち説明します・・・)。 .NetやCLRについて 詳しく知りたい人は赤坂さんのページを参考にしてください http://wisdom.sakura.ne.jp/programming/cs/cs1.html COMコンポーネントにはルールがあり、そのルールに乗っ取ってインタフェースを作成します。 実装の実態はDLLになっていて、 インタフェースは変えずにDLLを差し替えることでバージョンアップをすることができる仕様になっています。 COM作成に必要なツールは ・Guid Generator (C:\program files\Windows SDK\vバージョン\guidgen.exe) ・RegAsm.exe (C:\Windows\Microsoft.NET\Framework\vバージョン\RegAsm.exe) ・OLE/COM Object Viewer (C:\program files\Windows SDK\vバージョン\OleView.exe) の3つになります。 いずれもMicrosoftの標準ツールです COM作成に使うツールは ・Microsoft Windows SDK ・Microsoft .Net Framework 2.0以降 に入っているのでない人は最新版をインストールしてください COMコンポーネントを作成する上でいくつか注意しなければならないことがあります ※PCシステムのバックアップを取る 必然的にレジストリを操作することが多くなるので 誤ったところを操作するとシステムが動かなくなる危険性もあるので 念のため、バックアップを取ります ※管理者権限でのVisual Studioやツールの起動 これはWindows Vista以降ではUAC(User Account Control)というセキュリティ機能が働き システムの重要な部分(レジストリ等)の変更・追加・削除などは管理者でなければできなくなったので COM作成に使うツールが管理者権限で起動しないとうまく動きません ※COMコンポーネントを利用したアプリケーション配布時 COMコンポーネントは登録しないと COMコンポーネントを利用したアプリケーションは使用できないので RegAsm.exeで利用先PCにCOMコンポーネントを登録する必要があります #vote(wktk[6],COM?なにそれおいしいの?[6],Windowsでしか動かないのはMicrosoftの仕様です[2]) |wktk|6| |COM?なにそれおいしいの?|6| |Windowsでしか動かないのはMicrosoftの仕様です|2|