XSIUtils.LaunchProcess

導入

v5.0

詳細

バッチファイル、外部テキストエディタ、コマンドプロンプトなどの外部プロセスを起動します。

Linux では、Script History にメッセージが記録されない点を除き、System コマンドと同じです。また、Windows の System コマンドは一時的にコマンドプロンプトをポップアップしますが、このメソッドはポップアップしません。詳細については、CreateProcess の Win32 ドキュメントを参照してください。

C#構文

Int32 XSIUtils.LaunchProcess( String in_AppAndCommandLineArgs, Boolean in_bBlock, Object& in_Directory );

スクリプト構文

oLong = XSIUtils.LaunchProcess( CommandLine, [Blocking], [StartupDirectory] );

戻り値

Long:ブロッキングが true に設定されている場合は子プロセスの終了コードが戻されます。

パラメータ

パラメータ タイプ 説明
CommandLine String 実行ファイル名およびコマンドラインオプション。パスやファイル名の途中にスペース文字がある場合は、忘れずにクォーテーションで囲んでください。たとえば、"C:¥My Programs¥myeditor.exe"のようにクォーテーションで囲むことにより、C:¥My.exe と認識されることを防げます。
Blocking Boolean ブロッキングを True に設定すると、子プロセスの実行が完了するまで Softimage が復帰しません。

デフォルト値: false

StartupDirectory String プロセスの初期ディレクトリ。設定しない場合は Softimage のカレントワーキングディレクトリからプロセスが起動されます。このオプションはコマンドプロンプトを起動するときに便利です。

1. VBScript の例

'

'	This example launchs a command prompt with the directory set 

'	to the current user path

'

' The new command prompt inherits all the environmental variables

' from Softimage so it will behave like a Softimage command prompt

startDir = Application.InstallationPath( siUserPath )

bBlocking = false 		' We don't want the command prompt to freeze Softimage

if Application.Platform = "Win32" then

	XSIUtils.LaunchProcess "cmd /C start cmd /K title Softimage Command Prompt", bBlocking, startDir  

else

	XSIUtils.LaunchProcess "xterm", bBlocking, startDir

end if

2. JScript の例

/*

	This example shows how the XSIUtils.LaunchProcess method can be used to execute an 

	external process. In this case it shows spdlcheck can be used to test a spdl directly 

	from within scripting.

*/

if ( Application.Platform == "Win32" )

{

	var slash = "\\" ;	

}

else

{

	var slash = "/" ;

}

// Path to one of the spdl files that ships with Softimage

var twistSpdl = Application.InstallationPath( siFactoryPath ) + slash + "Application" 

			+ slash + "spdl" + slash + "twistop.spdl" ;

var strResults = SpdlCheckFile( twistSpdl ) ;

if ( strResults == "" )

{

	LogMessage( "Spdl is OK" ) ;

}

else

{

	LogMessage( "Spdl is busted:\n" + strResults ) ;

}

// Helper function that runs spdlcheck on the provided file path. 

// Returns:

//  - an empty string if the spdl is ok.  

//  - the error details output by spdlcheck if there is a problem.

function SpdlCheckFile( in_file )

{			

	// We will launch "spdlcheck" and tell it to output

	// its results into a temporary file	

	var tmpFile = Application.InstallationPath( siUserPath ) + slash

			+ "spdlcheckoutput.tmp" ;

	var cmd = "spdlcheck -nologo -noverbose -out \"" + tmpFile + "\" \"" + in_file + "\"";

	Logmessage( "This command line will be executed:\n" + cmd ) ;

	// Specify true for the blocking argument so that our script waits until spdlcheck

	// has finished before trying to read the output file

	XSIUtils.LaunchProcess( cmd, true ) ;

	var oFSO = new ActiveXObject( "Scripting.FileSystemObject" ) ;

	var oTextFile = oFSO.OpenTextFile(tmpFile, 1 ) ;

	// We expect a string like:

	// "Compilation succeeded c:\Softimage\<....>\Application\spdl\twistop.spdl (XSI Object)"

	fileAsStr = oTextFile.ReadAll() ;

	oTextFile.Close() ;

	oFSO.DeleteFile( tmpFile ) ;

	// If we find the string "Compilation succeeded" then we would know that 

	// we were successful

	if ( -1 != fileAsStr.search( /Compilation succeeded/ ) )

	{

		return "" ;

	}

	// Return the error details

	return fileAsStr ;

}

関連項目

System