Мне нужно разработать программу запуска для exe-файла, но у меня проблемы с закрытием основной формы.
Я хочу оставить исполняемый файл открытым, но закрыть форму. Я добился успеха с выполнением приложения, исполняется .exe и форма «закрывается» после открытия .exe. Это почти то, что я хотел, но launcher.exe все еще активен в диспетчере задач Windows.
Это процедура для запуска .exe:
procedure TForm2.LancerVersion(aExe: String);
var
SEInfo: TShellExecuteInfo;
begin
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do
begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := PChar(aExe);
nShow := SW_SHOWNORMAL;
end;
ShellExecuteEx(@SEInfo);
if Blight then
begin
free;
Close; **//HERE I WOULD LIKE TO CLOSE CLEANLY MY FORM**
end
else
hide;
end;
Это обычная процедура закрытия:
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if BClose then
begin
Canclose := false;
Bshow := false;
end;
Canclose := true; **//IT GOES HERE AFTER CLOSE IS CALLED**
end;
Я написал эту настраиваемую процедуру, потому что иногда я просто хочу скрыть форму в значке на панели задач в зависимости от параметра, когда мы нажимаем кнопку окна X. Итак, не обращайте внимания на первое условие «если Bclose, то».
Я позаботился о том, чтобы освободить весь свой объект в FormDestroy, который я создал в FormCreate, но делать нечего, процесс сохраняется ...
Буду признателен, если вы мне поможете, или если вы посмотрите на мою проблему. Заранее спасибо..
host
приложение после запуска из него другого процесса. - person LightBulb   schedule 04.07.2014Application.Terminate
должен это сделать. Показывать весьShellExecute
код бессмысленно, поскольку он не имеет ничего общего с реальной проблемой (хотя при этом обнаруживается утечка дескриптора процесса). Пожалуйста, постарайтесь сократить это до минимума, необходимого для иллюстрации проблемы. Это помогает всем, особенно вам. ЗвонокFree
наSelf
- почти всегда катастрофа. Сделайте это, и вы превратитесь в настоящую дыру. Подумайте, что произойдет, когдаFree
вернется? - person David Heffernan   schedule 04.07.2014