NetWare、Symbian OS、UNIX、Windows、および Windows CE で有効です。
Exec または Execute 関数によって、指定されたアプリケーションが実行されます。
関数の形式
Execute(cmdline as String, wait as Boolean, style as Integer) as Integer
Execute(cmdline as String, wait as Boolean) as Integer
Execute(cmdline as String) as Integer
コマンド ラインを指定します(ファイル名とオプション パラメータ)。
注: Windows プラットフォームでは、実行するファイルが拡張子 .exe を持たない場合、ファイル拡張子を明示的に指定する必要があります。たとえば、Win9 では「command」ではなく「command.com」を指定します。
アプリケーションが終了するまでスクリプトを待機させるかどうかを指定します。 (Windowsのみ)
アプリケーションのウィンドウのスタイルを指定します。 (Windowsのみ)
注: コマンド ラインのコマンドにスペース文字が含まれている場合は、コマンドを引用符で囲みます。 例: Execute("""\temp 1\prgedit.exe""",true,0)
wait パラメータによって、アプリケーションが終了するまで待機せずに関数がスクリプト実行に戻るかどうかを指定します。 値が TRUE の場合、関数はアプリケーションが終了するまで強制的に待機します。 デフォルトは TRUE です。
UNIX プラットフォームでは、wait および style パラメータは無視されます。 この関数は常に、アプリケーションが終了するまで待機してから、スクリプト実行に戻ります。
style パラメータによって、Windows ベースのアプリケーションのメイン ウィンドウの表示方法を指定します。 このパラメータの値は、以下のいずれかになります。
ウィンドウは非表示になり、起動は別のウィンドウに渡されます。
ウィンドウが起動され、デフォルトのサイズおよび位置に表示されます。 これはデフォルトです。
ウィンドウが起動され、アイコンとして表示されます。
ウィンドウが起動され、最大化されたウィンドウとして表示されます。
ウィンドウがアイコンとして表示されます。 現在アクティブなウィンドウはアクティブのままです。
Windows の場合、関数が成功すると、マイナスでないリターン コードが execute() 関数に呼び出された指定コマンドのリターン コードを示します。 インタープリタによってコマンドを始動できなかった場合、以下のリターン コードが返され、問題が発生したことを示します。
システムのメモリまたはリソースが不足しています。
指定されたファイルが見つかりませんでした。
指定したパスが見つかりませんでした。
この .exe ファイルは無効です。
不明なエラーです。
UNIX では、システム関数「system()」によって指定されたコマンドが起動されます。 したがって、「system()」のリターン コードが戻りコードになります。 つまり、system() が失敗すると、-1 が返されます。 system() が成功すると、「waitpid()」のリターン コード形式に応じた値が返されることを意味します。 スクリプトでは、リターン コードを分析し、起動されたコマンドが成功したか失敗したかを判別する必要があります。 この処理は、以下の関数を使用して実行できます。
' ' Execute() リターン コード評価は UNIX をサポートします。 ' ' ****************************************************************************************************** ' ' Name ' DMS_ExecExit(retVal As Integer) As Boolean ' ' Description ' Execute() によって始動されたプロセスが正常終了したかどうかを判別します。 ' ' Arguments ' retVal 評価対象のリターン コード ' ' Returns ' TRUE 正常に終了した場合 ' FALSE その他 ' ' Comment ' この関数はマクロ WIFEXITED の waitpid(5) 記述に対応します。 ' #define WIFEXITED(stat) ((int)((stat)&0xFF) == 0) ' Function DMS_ExecExit(retVal As Integer) As Boolean If (retVal And 255) Then DMS_ExecExit = FALSE Else DMS_ExecExit = TRUE End If End Function ' ****************************************************************************************************** ' ' Name ' DMS_ExecExitStatus(retVal As Integer) As Integer ' ' Description ' Execute() 呼び出しのリターン値、つまり起動されたプロセスのリターン コードの ' シェル終了コードを示します。 ' ' Arguments ' retVal Execute() から返されるリターン コード ' ' Returns ' Execute() が正常終了した場合、子の表示ステータスが返されます。 ' そうでない場合は、retVal が返されます。 ' ' Comment ' この関数はマクロ WEXITSTATUS の waitpid(5) 記述に対応します。 ' #define WEXITSTATUS(stat) ((int)(((stat)>>8)&0xFF)) ' Function DMS_ExecExitStatus(retVal As Integer) As Integer If Not(DMS_ExecExit(retVal)) Then DMS_ExecExitStatus = retVal Else DMS_ExecExitStatus = retVal / 256 DMS_ExecExitStatus = DMS_ExecExitStatus And 255 End If End Function
関数が成功した場合、戻り値はマイナスでない値になります(WAIT によってアプリケーション終了まで関数が待機するように指定された場合はアプリケーションの終了コード)。 そうでない場合、関数から以下のエラー値のいずれが返されます。
システムのメモリまたはリソースが不足しています。
指定されたファイルが見つかりませんでした。
指定したパスが見つかりませんでした。
この .exe ファイルは無効です。
不明なエラーです。
例:
Dim Tempname as string '一時ファイルのファイル名を保有します。
Dim hFile as integer ' 一時ファイルを操作します
' 最初に一時ファイルのファイル名を取得してファイルを作成します...
Tempname=EnvGetString("TEMP")
if TempName="" then
TempName="MyFile.txt"
else
Tempname=Tempname+"\MyFile.txt"
end if
hfile=CreateFile(Tempname)
if hFile<0 then
' ファイルの作成中にエラーが発生したため、ユーザに通知し終了します。
MsgBox("Could not create temporary file...")
goto end
end if
' ファイルにテキストを保存しテキストを閉じます...
WriteFile(hFile,"This text is shown using notepad")
WriteFile(hFile,"")
WriteFile(hFile,"Please exit notepad to resume script execution")
Closefile(hFile)
'そのファイルでメモ帳を起動します...
if Execute("notepad "+Tempname,TRUE)<0 then MsgBox("Could not launch notepad...")
'作業を終了する前に一時ファイルを必ず消去します...
DeleteFile(Tempname)
end:
|
Copyright © 2014 CA Technologies.
All rights reserved.
|
|