[Overview][Types][Classes][Index] | Reference for unit 'process' (#fcl)

# TProcess

[Properties (by Name)] [Methods (by Name)] [Events (by Name)]

Class to start and control other processes.

## Declaration

Source position: process.pp line 44

`type TProcess = class(TComponent)`
`protected`
`FRunning: Boolean;`
`FExitCode: Cardinal;`
`FInputStream: TOutputPipeStream;`
`FOutputStream: TInputPipeStream;`
`FStderrStream: TInputPipeStream;`
`procedure CloseProcessHandles; virtual;`
`procedure CreateStreams(); virtual;`
`procedure FreeStream();`
`public`
`constructor Create(); override;` |  | Create a new instance of the TProcess class.
`destructor Destroy; override;` |  | Destroy this instance of TProcess
`procedure Execute; virtual;` |  | Execute the program with the given options
`procedure CloseInput; virtual;` |  | Close the input stream of the process
`procedure CloseOutput; virtual;` |  | Close the output stream of the process
`procedure CloseStderr; virtual;` |  | Close the error stream of the process
`function Resume; virtual;` |  | Resume execution of a suspended process
`function Suspend; virtual;` |  | Suspend a running process
`function Terminate(); virtual;` |  | Terminate a running process
`function WaitOnExit;` |  | Wait for the program to stop executing.
`property WindowRect: Trect; [rw]` |  | Positions for the main program window.
`property Handle: THandle; [r]` |  | Handle of the process
`property ProcessHandle: THandle; [r]` |  | Alias for Handle
`property ThreadHandle: THandle; [r]` |  | Main process thread handle
`property ProcessID: Integer; [r]` |  | ID of the process.
`property ThreadID: Integer; [r]` |  | ID of the main process thread
`property Input: TOutputPipeStream; [r]` |  | Stream connected to standard input of the process.
`property Output: TInputPipeStream; [r]` |  | Stream connected to standard output of the process.
`property Stderr: TInputPipeStream; [r]` |  | Stream connected to standard diagnostic output of the process.
`property ExitStatus: Integer; [r]` |  | Exit status of the process.
`property InheritHandles: Boolean; [rw]` |  | Should the created process inherit the open handles of the current process.
`published`
`property Active: Boolean; [rw]` |  | Start or stop the process.
`property ApplicationName: String; [rw]` |  | Name of the application to start
`property CommandLine: String; [rw]` |  | Command-line to execute
`property ConsoleTitle: String; [rw]` |  | Title of the console window
`property CurrentDirectory: String; [rw]` |  | Working directory of the process.
`property Desktop: String; [rw]` |  | Desktop on which to start the process.
`property Environment: TStrings; [rw]` |  | Environment variables for the new process
`property Options: TProcessOptions; [rw]` |  | Options to be used when starting the process.
`property Priority: TProcessPriority; [rw]` |  | Priority at which the process is running.
`property StartupOptions: TStartupOptions; [rw]` |  | Additional (Windows) startup options
`property Running: Boolean; [r]` |  | Determines wheter the process is still running.
`property ShowWindow: TShowWindowOptions; [rw]` |  | Determines how the process main window is shown (Windows only)
`property WindowColumns: Cardinal; [rw]` |  | Number of columns in console window (windows only)
`property WindowHeight: Cardinal; [rw]` |  | Height of the process main window
`property WindowLeft: Cardinal; [rw]` |  | X-coordinate of the initial window (Windows only)
`property WindowRows: Cardinal; [rw]` |  | Number of rows in console window (Windows only)
`property WindowTop: Cardinal; [rw]` |  | Y-coordinate of the initial window (Windows only)
`property WindowWidth: Cardinal; [rw]` |  | Height of the process main window (Windows only)
`property FillAttribute: Cardinal; [rw]` |  | Color attributes of the characters in the console window (Windows only)
`end;`

## Inheritance

`TProcess` |  | Class to start and control other processes.
`TComponent,IUnknown,IInterfaceComponentReference`
`TPersistent`
`TObject`

## Description

TProcess is a component that can be used to start and control other processes (programs/binaries). It contains a lot of options that control how the process is started. Many of these are Win32 specific, and have no effect on other platforms, so they should be used with care.

The simplest way to use this component is to create an instance, set the CommandLine property to the full pathname of the program that should be executed, and call Execute. To determine whether the process is still running (i.e. has not stopped executing), the Running property can be checked.

More advanced techniques can be used with the Options settings.

## See also

Create |  | Create a new instance of the TProcess class.
Execute |  | Execute the program with the given options
Running |  | Determines wheter the process is still running.
CommandLin |  | Command-line to execute
Options |  | Options to be used when starting the process.

The latest version of this document can be found at lazarus-ccr.sourceforge.net .