The jShell library allows you to start other programs. It is based on Apache Commons Exec project:
http://commons.apache.org/proper/commons-exec/index.html
The programs are always started asynchronously. ProcessComplete event is raised when the process completes.
The following code will run the Java program we
previously created:
Sub AppStart (Args() As String)
Dim shl As Shell
shl.Initialize("shl", "java", _
Array As String("-cp", "curl.jar", "b4j.example.main", "http://www.b4x.com"))
shl.WorkingDirectory = "C:\Users\H\Documents\B4J\Curl\Objects"
shl.Run(10000) 'set a timeout of 10 seconds
StartMessageLoop 'need to call this as this is a console app.
End Sub
Sub shl_ProcessCompleted (Success As Boolean, ExitCode As Int, StdOut As String, StdErr As String)
If Success AND ExitCode = 0 Then
Log("Success")
Log(StdOut)
Else
Log("Error: " & StdErr)
End If
ExitApplication
End Sub
The Shell library can be used in a UI app in the same way.
Installation instructions:
- Download the attached zip file.
- Unzip it and copy jShell.xml and jShell.jar to the additional libraries folder or to the internal libraries folder.
V1.30 is released - Includes a method to start a process and wait for it to complete. You should normally not use this method in a UI application as it will block the UI thread.