C#でVB.NETのInteraction.CreateObjectメソッド(CreateObject関数)と同じことをするには、Type.GetTypeFromProgIdメソッドで型を取得し、Activator.CreateInstanceメソッドなどによりインスタンスを作成します。
なおこのように作成したCOMオブジェクトは、必要がなくなった時にMarshal.FinalReleaseComObjectメソッドやMarshal.ReleaseComObjectメソッドで解放します。
次にVB.NETのInteraction.CreateObjectメソッドとほぼ同様の機能を有するメソッドのコードを示します。
/// <summary> /// COMオブジェクトへの参照を作成および取得する /// </summary> /// <param name="progId">作成するオブジェクトのプログラムID</param> /// <param name="serverName"> /// オブジェクトが作成されるネットワーク サーバーの名前 /// </param> /// <returns>作成されたCOMオブジェクト</returns> public static object CreateObject(string progId, string serverName) { Type t; if (serverName == null || serverName.Length == 0) t = Type.GetTypeFromProgID(progId); else t = Type.GetTypeFromProgID(progId, serverName, true); return Activator.CreateInstance(t); } /// <summary> /// COMオブジェクトへの参照を作成および取得する /// </summary> /// <param name="progId">作成するオブジェクトのプログラムID</param> /// <returns>作成されたCOMオブジェクト</returns> public static object CreateObject(string progId) { return CreateObject(progId, null); }
このようにして取得したCOMオブジェクトのプロパティやメソッドを呼び出すには、リフレクション(Type.InvokeMemberメソッドなど)を使用する必要があります。詳しくは、「型のメンバを動的に呼び出す」をご覧ください。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。