Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прога, запущенная этим кодом, освободит память, когда завершится? [D6, Win95/98]


AL2002 ©   (2002-11-06 12:37:00) 

Var
StartupInfo: TStartupInfo;
PI: TProcessInformation;

begin
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb:=Sizeof(StartupInfo);
StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow:=0;
//CreateProcess(NiL, "C:\Appl\ZipMagic4\ZM32.EXE", Nil, Nil, FALSE, IDLE_PRIORITY_CLASS, Nil, Nil, si, pi);
CreateProcess(NiL, "C:\SuperProg\SuperProgItself.exe", Nil, Nil, FALSE, IDLE_PRIORITY_CLASS, Nil, "", StartupInfo, pi);
end;


AL2002   (2002-11-06 13:26:00) [1]


> KoluChi © (06.11.02 13:12)
> ДА

Ага. Точно. Правда, прога дико подвисает после закрытия процесса, но всё равно козырно. :)


KoluChi   (2002-11-06 13:12:00) [2]

ДА


AL2002   (2002-11-06 13:02:00) [3]


> KoluChi © (06.11.02 12:44)
> Вообщето когда программа завершается, то она удаляется
> из памяти, но если тебе этого не достаточно, то допиши
> следующее:
> WaitForSingleObject(PrInfo.hProcess, INFINITE);
> CloseHandle(PI.hProcess);
> CloseHandle(PI.hThread);

Ты хочешь сказать, что прога будет ждать, пока внешний процесс не завершится? Если да, то это классно. Это то, что мне и нужно. Это так?


Skier   (2002-11-06 12:51:00) [4]

>AL2002
The created process remains in the system until all threads within the process have terminated and all handles to the process and any of its threads have been closed through calls to CloseHandle. The handles for both the process and the main thread must be closed through calls to CloseHandle

Судя по всему CloseHandle - нужен. Был не прав...


Song   (2002-11-06 12:46:00) [5]

Я думаю CloseHandle() надо сделать. Дельфи сейчас под рукой нет, так бы точно сказал.


KoluChi   (2002-11-06 12:44:00) [6]

Вообщето когда программа завершается, то она удаляется из памяти, но если тебе этого не достаточно, то допиши следующее:
WaitForSingleObject(PrInfo.hProcess, INFINITE);
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);


Skier   (2002-11-06 12:40:00) [7]

>AL2002
Динамического выделения памяти нет, значит - ДА.


Наверх

Титульная страница Поиск, карта сайта Написать письмо