Runs an external program.
Run ( "program" [, "workingdir" [, show_flag [, opt_flag]]] )
program | The full path of the program (EXE, BAT, COM, or PIF) to run (see remarks). |
workingdir | [optional] The working directory. Blank ("") uses the current working directory. This is not the path to the program. |
show_flag | [optional] The "show" flag of the executed program: @SW_HIDE = Hidden window (or Default keyword) @SW_MINIMIZE = Minimized window @SW_MAXIMIZE = Maximized window |
opt_flag | [optional] Controls various options related to how the parent and child process interact. $STDIN_CHILD (0x1) = Provide a handle to the child's STDIN stream $STDOUT_CHILD (0x2) = Provide a handle to the child's STDOUT stream $STDERR_CHILD (0x4) = Provide a handle to the child's STDERR stream $STDERR_MERGED (0x8) = Provides the same handle for STDOUT and STDERR. Implies both $STDOUT_CHILD and $STDERR_CHILD. $STDIO_INHERIT_PARENT (0x10) = Provide the child with the parent's STDIO streams. This flag can not be combined with any other STDIO flag. This flag is only useful when the parent is compiled as a Console application. $RUN_CREATE_NEW_CONSOLE (0x10000) = The child console process should be created with it's own window instead of using the parent's window. This flag is only useful when the parent is compiled as a Console application. Constants are defined in AutoItConstants.au3. |
Success: | the PID of the process that was launched. |
Failure: | 0 and sets the @error flag to non-zero. |
Paths with spaces need to be enclosed in quotation marks.
To run DOS (console) commands, try Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE) ; don't forget " " before "/c"
After running the requested program the script continues. To pause execution of the script until the spawned program has finished use the RunWait() function instead.
Providing the Standard I/O parameter with the proper values permits interaction with the child process through the StderrRead(), StdinWrite() and StdoutRead() functions. Combine the flag values (or use $STDERR_CHILD, $STDIN_CHILD & $STDOUT_CHILD) to manage more than one stream.
In order for the streams to close, the following conditions must be met:
1) The child process has closed its end of the stream (this happens when the child closes).
2) AutoIt must read any captured streams until there is no more data.
3) If STDIN is provided for the child, StdinWrite() must be called to close the stream. Once all streams are detected as no longer needed, all internal resources will automatically be freed.
StdioClose() can be used to force the STDIO streams closed.
ConsoleRead, ProcessClose, RunAs, RunAsWait, RunWait, ShellExecute, ShellExecuteWait, StderrRead, StdinWrite, StdioClose, StdoutRead
Example()
Func Example()
; Run Notepad with the window maximized.
Local $iPID = Run("notepad.exe", "", @SW_SHOWMAXIMIZED)
; Wait 10 seconds for the Notepad window to appear.
WinWait("[CLASS:Notepad]", "", 10)
; Wait for 2 seconds.
Sleep(2000)
; Close the Notepad process using the PID returned by Run.
ProcessClose($iPID)
EndFunc ;==>Example