[若干誤った解釈もあるかもしれないのでご注意ください]

いきなり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コンポーネントを登録する必要があります

選択肢 投票
wktk 5  
COM?なにそれおいしいの? 6  
Windowsでしか動かないのはMicrosoftの仕様です 1  

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-07-17 (火) 14:26:18