COMオブジェクト
COMオブジェクトとは何か
COMとはCommon Object Modelの略でMicrosoftが提唱するオブジェクトの規格です。そしてActiveXはCOMを基盤とする技術です。将来のWindowsはこのCOMを基盤とするOSに変わっていくとMicrosoftは言っています。
これが本当ならCOMを知らないとWindowsのアプリケーションは作れないということになりますが、Delphi(C++ Builderも)やVisual Basicを使っている人ならその心配はありません。なぜなら、すでにそのような人たちはすでにCOMを無意識のうちに使ってアプリケーションを作っているのですから。(Visual C++4.0/5.0でCOMを使うにはかなりの知識が必要です)
そうは言ってもCOMの知識があれば人の先をいくプログラミングが可能となります。Visual BasicではCOMの細かな操作を行うためにはWindows APIを使う必要がありますが、Delphiではいくつかの便利なCOMルーチンが用意されています。
COMの知識
この場でCOMの内容を詳しく説明できるほどCOMは簡単ではありません。「Delphi3 開発者ガイド」の第4部に「COMとActiveXの操作」があるので、ぜひ一読されることをお勧めします。けっこうわかりやすくCOMの一般技術が述べられています。
DelphiのCOM操作ルーチン
ClassIDToProgID | 指定されたクラスのクラス ID(CLSID)に対応するプログラマティック ID を返します |
CreateComObject | COM オブジェクトのインスタンスを 1 つ作成します |
CreateOleObject | OLE オートメーションオブジェクトのインスタンスを 1 つ作成します |
CreateRegKey | HKEY_CLASSES_ROOT のサブキーであるレジストリキーを作成します |
CreateRemoteComObject | ほかのマシンで Com オブジェクトを作成し,そのオブジェクトの IUnknown 型のインターフェースを返します |
DeleteRegKey | システムレジストリから HKEY_CLASSES_ROOT のサブキーであるキーを 1 つ削除します |
DLLCanUnloadNow | この関数をエクスポートしてインプロセスサーバーをアンロードできるかどうかを Windows に示します |
DllGetClassObject | ActiveX オブジェクトがインプロセス ActiveX サーバー(DLL)にある場合に,ActiveX オブジェクトのクラスファクトリを取得するために使われます |
DllRegisterServer | システムレジストリ内の現在のモジュールにインプロセス ActiveX サーバーを登録します |
DllUnregisterServer | システムレジストリの現在のモジュールで OLE オートメーションサーバーの登録を解除します |
GetActiveOleObject | 現在実行中の登録されている OLE オブジェクトへの IDispatch 型インターフェースへの参照を取得します |
GetOleFont | Delphi ネイティブの TFont に直接マップされる OLE フォントオブジェクトを作成します |
GetOlePicture | Delphi ネイティブの TPicture に直接マップされる OLE 画像オブジェクトを作成します |
GetOleStrings | Delphi ネイティブの TStrings に直接マップされる OLE 文字列オブジェクトを作成します |
GUIDToString | クラス識別子 GUID を文字列に変換します |
OleCheck | 結果のコードがエラーを示すとEOleSysError 例外を生成します |
OleError | EOleSysError 例外を生成します |
OleStrToString | OLE を介して受け取ったデータを Delphi 文字列にコピーします |
OleStrToStrVar | OLE 文字列を既存の Delphi 文字列にコピーします |
ProgIDToClassID | ProgID パラメータに指定された文字列に対応するクラス ID(CLSID)の TGUID を返します |
SetOleFont | OLE フォントオブジェクトを TFont オブジェクトに接続し,OLE フォントオブジェクトのプロパティを TFont にコピーします |
SetOlePicture | OLE 画像オブジェクトを TPicture オブジェクトに接続し,OLE 画像オブジェクトのプロパティを TPicture にコピーします |
StringToGUID | 文字列を GUID に変換します |
StringToOleStr | 文字列型を OLE 形式の文字列に変換してメモリに割り当てます |