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 形式の文字列に変換してメモリに割り当てます |