GetObject 関数 (JScript 8.0)
更新 : 2007 年 11 月
ファイルのオートメーション オブジェクトへの参照を返します。関数には、次の 2 つの形式があります。
function GetObject(class : String)
function GetObject(pathname : String [, class : String])
引数
class
必ず指定します。"appName.objectType" 形式の文字列を指定します。appName は、オブジェクトを提供するアプリケーションの名前、objectType は作成するオブジェクトの型またはクラスです。pathname
必ず指定します。オブジェクトが含まれているファイル名までの完全パスを指定します。省略した場合は、引数 class を指定する必要があります。
解説
ファイルのオートメーション オブジェクトにアクセスし、オブジェクトをオブジェクト変数に代入するには、GetObject 関数を使用します。GetObject 関数で返されるオブジェクトへの参照をオブジェクト変数に代入します。次に例を示します。
var CADObject;
CADObject = GetObject("C:\\CAD\\SCHEMA.CAD");
このコード例が実行されると、指定された引数 pathname に対応するアプリケーションが起動し、指定されたファイルのオブジェクトがアクティブになります。GetObject 関数では、引数 pathname に長さ 0 の文字列 ("") が指定されると、指定の種類の新規オブジェクトのインスタンスを返します。引数 pathname を省略すると、GetObject 関数は、指定した種類の現在アクティブなオブジェクトを返します。指定した種類のオブジェクトが存在しない場合はエラーが発生します。
アプリケーションによっては、ファイルの一部をアクティブにできる場合もあります。ファイル名の最後に感嘆符 (!) を付け、続けてアクティブにするファイルの部分を表す文字列を指定します。このような文字列を作成する方法については、オブジェクトを作成したアプリケーションのドキュメントを参照してください。
たとえば、描画のアプリケーションでは、1 つのファイルの複数のレイヤに描画を保存する場合があります。次のコードを使用すると、SCHEMA.CAD という描画ファイルの 1 つのレイヤをアクティブにできます。
var LayerObject = GetObject("C:\\CAD\\SCHEMA.CAD!Layer3");
オブジェクトのクラスが指定されていない場合は、指定されたファイル名を基に、オートメーションは起動するアプリケーションとアクティブにするオブジェクトを決定します。ただし、ファイルによっては、複数のオブジェクトのクラスをサポートしている場合もあります。たとえば、1 つの描画で Application オブジェクト、Drawing オブジェクト、および Toolbar オブジェクトという 3 つの異なる種類のオブジェクトを同一ファイルの構成要素としてサポートすることもあります。ファイルのどのオブジェクトをアクティブにするかは、引数 class で指定します。次に例を示します。
var MyObject;
MyObject = GetObject("C:\\DRAWINGS\\SAMPLE.DRW", "FIGMENT.DRAWING");
このコード例では、FIGMENT が描画のアプリケーションの名前で、DRAWING がそのアプリケーションによってサポートされるオブジェクトの種類です。アクティブになったオブジェクトをコードで参照するには、定義したオブジェクト変数を使います。上の例では、オブジェクト変数 MyObject を使って新規オブジェクトのプロパティとメソッドにアクセスします。次に例を示します。
MyObject.Line(9, 90);
MyObject.InsertText(9, 100, "Hello, world.");
MyObject.SaveAs("C:\\DRAWINGS\\SAMPLE.DRW");
メモ : |
---|
GetObject 関数は、オブジェクトの現在のインスタンスがある場合や、既に読み込んだファイルからオブジェクトを作成する場合に使います。現在のインスタンスがない場合、または読み込み済みのファイルからオブジェクトを起動しない場合は、ActiveXObject オブジェクトを使います。 |
複数のインスタンスを作成できないオブジェクトの場合は、何度 ActiveXObject 関数を実行しても、そのオブジェクトのインスタンスは 1 つしか作成されません。単一インスタンス オブジェクトの場合、引数 pathname に長さ 0 の文字列 ("") を指定して GetObject 関数を呼び出すと、常に同じインスタンスを返します。また、引数 pathname を省略すると、エラーになります。