CloseMainWindow: Boolean;
Метод CloseMainWindow закрывает процесс, имеющий пользовательский интерфейс, посылая сообщение о закрытии главному окну.
Метод возвращает значение True, если запущенный процесс имеет главное окно, и окну было отправлено сообщение о закрытии. Если процесс не имеет главного окна либо уже был завершен, то метод вернет значение False.
Для выполнения примера предполагается наличие формы, расположенных на ней кнопок с наименованиями Button1, Button2, компонента Label с наименованием Label1 и таймера с наименованием «Timer1». Предполагается, что в операционной системе установлен пакет приложений Microsoft Office.
Добавьте ссылки на системные сборки: Host, Ui.
Class TESTForm: Form
Button1: Button;
Button2: Button;
Label1: Label;
Timer1: Timer;
WinProc: IWinProcess;
WinInfo: IWinShellExecuteInfo;
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Begin
WinInfo := New WinShellExecuteInfo.Create;
WinInfo.File := "excel.exe";
WinProc := New WinProcess.Create;
WinProc.Start(WinInfo);
Timer1.Enabled := True;
End Sub Button1OnClick;
Sub Button2OnClick(Sender: Object; Args: IMouseEventArgs);
Begin
WinProc.CloseMainWindow;
End Sub Button2OnClick;
Sub Timer1OnTimer(Sender: Object; Args: IEventArgs);
Begin
If WinProc <> Null Then
If Not WinProc.HasExited Then
Label1.Text := "Процесс выполняется";
Else
Label1.Text := "Процесс завершен. Код завершения:" + WinProc.ExitCode.ToString;
End If;
Else
Label1.Text := "Процесс не запущен"
End If;
End Sub Timer1OnTimer;
End Class TESTForm;
После запуска формы при нажатии кнопки Button1 будет запущено приложение Microsoft Excel. Статус выполнения будет контролироваться в процедуре таймера. Соответствующие сообщения будут выводиться в компоненте Label1. При нажатии кнопки Button2 запущенное приложение Microsoft Excel будет закрыто.
См. также: