Platforms to show: All Mac Windows Linux Cross-Platform
Required plugins for this example: MBS Util Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Util/Shell
This example is the version from Sat, 3rd Mar 2023.
Project "Shell.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
EventHandler Sub Open()
'TestWhoami
'TestPing
TestPingAsync
End EventHandler
Sub TestPing()
// synchronously
Dim s As New ShellMBS
Dim args() As String
args.Append "-c"
args.Append "5"
args.Append "monkeybreadsoftware.com"
s.SetArguments args
s.Execute "/sbin/ping"
Dim output As String = s.ReadOutput
Dim errors As String = s.ReadError
While s.IsRunning
output = output + s.ReadOutput
errors = errors + s.ReadError
MainWindow.Log.Text = output+Errors
// wait a bit
app.DoEvents 1
Wend
output = output + s.ReadOutput
errors = errors + s.ReadError
End Sub
Sub TestPingAsync()
// synchronously
sh = New MyShellMBS
Dim args() As String
args.Append "-c"
args.Append "5"
args.Append "monkeybreadsoftware.com"
sh.SetArguments args
dim AppPath as string
#if TargetLinux then
AppPath = "/usr/bin/ping"
#ElseIf TargetWindows then
AppPath = "ping.exe"
#ElseIf TargetMacOS then
AppPath = "/sbin/ping"
#else
?
#endif
sh.Execute AppPath
If sh.ErrorCode <> 0 Then
MsgBox "Failed to run "+Str(sh.ErrorCode)
End If
// see evens in MyShellMBS for reading data
End Sub
Sub TestWhoami()
Dim s As New ShellMBS
s.Execute "/usr/bin/whoami"
s.Wait 5
Dim output As String = s.ReadOutput
Dim errors As String = s.ReadError
Break
MsgBox "whoami: "+output
End Sub
Property sh As MyShellMBS
End Class
Class MainWindow Inherits Window
Control Log Inherits TextArea
ControlInstance Log Inherits TextArea
End Control
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
Class MyShellMBS Inherits ShellMBS
EventHandler Sub Completed()
output = output + Me.ReadOutput
errors = errors + Me.ReadError
MainWindow.Log.Text = output+Errors+EndOfLine+"ErrorCode: " + me.ErrorCode.ToString
MsgBox "Completed"
End EventHandler
EventHandler Sub DataAvailable(AvailableBytesError as Integer, AvailableBytesOutput as Integer)
output = output + Me.ReadOutput
errors = errors + Me.ReadError
MainWindow.Log.Text = output+Errors
End EventHandler
Property Errors As string
Property output As string
End Class
End Project
The items on this page are in the following plugins: MBS Util Plugin.