スクリプトファイルを実行します。このルーチンを使用すると、単一のプラグインを複数の言語で記述できます。たとえば、VBScript
スクリプトで、JScript で記述されているヘルパー関数を呼び出すことができます。また、COM C++
プラグインでスクリプトコードを実行する場合にも便利です。
さらに、スクリプトをカスタムコマンドとして登録することも可能です。この方法の利点の 1
つは、スクリプトを呼び出す場合にそのスクリプトのフルパスを知らなくてもよいということです。
エラーが生じた場合は、グローバル ErrorInfo
に説明情報が格納されます。たとえば、解析エラーやスクリプトエラーが生じた場合は、問題の説明が
ErrorInfo.Description プロパティに記録され、行番号は ErrorInfo.HelpContext
プロパティに記録されます。この情報を確認する方法は、言語によって異なります。たとえば、C++の場合は'GetErrorInfo()'、VBScript
の場合は 'err'、JScript の場合は 'Error object' を参照してください。
oVariant = Application.ExecuteScript( FileName, [Language], [ProcName], [Params] ); |
プロシージャの戻り値を含むVariant
パラメータ | タイプ | 詳細 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FileName | StringまたはExpression | スクリプトファイルのフルパス | ||||||||||||
言語 | StringまたはExpression | 言語を使用してスクリプトを記述します。
デフォルト値:ファイル名の拡張子を基に決定
|
||||||||||||
ProcName | String |
実行するサブルーチンの名前。スクリプト言語の性質によっては、グローバルコード(たとえば、サブルーチンに含まれないコード)も実行されます。 ヒント:サブルーチンは、VBScript では"sub"または"function"、JScript では"function"、PerlScript では"sub"、Python では"def"になります。 |
||||||||||||
Params | VariantのArray | サブルーチンに渡す引数 |
Dim fso, wText, bInteractive, TestFile TestFile="c:\temp\test.vbs" Main() '------------------------------------------------------------------------------ ' NAME: FillFile ' ' INPUT: ' ' DESCRIPTION: Fill the test file '------------------------------------------------------------------------------ sub FillFile (in_file) wText.WriteLine "Main()" wText.WriteLine "" wText.WriteLine "sub log_some_messages(an_int, a_string)" wText.WriteLine "logmessage ""the int : "" & an_int" wText.WriteLine "logmessage ""the string : "" & a_string" wText.WriteLine "end sub" wText.WriteLine "" wText.WriteLine "sub main()" wText.WriteLine "CreatePrim ""Sphere"", ""NurbsSurface""" wText.WriteLine "end sub" wText.Close end sub sub main() Set fso = CreateObject("Scripting.FileSystemObject") Set wText = fso.CreateTextFile( TestFile, 1) FillFile TestFile ExecuteScript TestFile dim aParams aParams = Array(123456789, "toto") ExecuteScript TestFile,,"log_some_messages", aParams end sub |