unit frm_main;
{$mode objfpc}{$H+}
interface
uses
Process,
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
btn_process: TButton;
procedure btn_processClick(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.btn_processClick(Sender: TObject);
var
new_process: TProcess;
env_count: integer;
begin
new_process := TProcess.Create(nil);
try
new_process.InheritHandles := False;
new_process.Options := [];
new_process.ShowWindow := swoShow;
// Copy default environment variables including DISPLAY variable for GUI application to work
for env_count := 1 to GetEnvironmentVariableCount do
new_process.Environment.Add(GetEnvironmentString(env_count));
new_process.Executable := Application.ExeName;
new_process.Execute;
finally
new_process.Free;
end;
end;
end.