Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.16;
Скачать: CL | DM;

Вниз

Освобождение памяти после работы внешней программы   Найти похожие ветки 

 
ed30   (2002-11-29 13:30) [0]

Добрый день!

Подскажите пожалуйста, как можно (если это возоможно) очистить память после запуска и отработки внешнего приложения из моей программы.
В приведенном ниже куске, если его делать в цикле (да и для одного запуска тоже), постоянно "поедается" память.

TmpSt := PChar(cmdAcrobat + " " + "d:\test.ps");
iResult := WinExec(TmpSt, SW_SHOWMINNOACTIVE);
TheWindowHandle := FindAWindow("Acrobat", "");
if TheWindowHandle <> 0 then begin
GetWindowThreadProcessID(TheWindowHandle, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessHandle, 1);
CloseHandle(ProcessHandle);
end;

Через CreateProcess то же самое.

Заранее спасибо, Эд.


 
Morfein   (2002-11-30 22:18) [1]

Обычно этим виндовый менджер памяти занимается...

А насчёт TerminateProcess вот чего в хэлпе написано :
TerminateProcess causes all threads within a process to terminate, and causes a process to exit, but DLLs attached to the process are not notified that the process is terminating.


 
kostik78ua   (2002-12-01 00:00) [2]

Замена TerminateProcess (работает с DLL):

function NTKillProcess(iProcessID: Integer): Integer;
var
hProcess: Integer;
pfnExitProcess: Pointer;
hInstance: Integer;
hThread: DWORD;
begin
Result:=ERROR_SUCCESS;

hProcess:=OpenProcess(PROCESS_ALL_ACCESS, FALSE, iProcessID);

if hProcess > 0 then begin
hInstance:=GetModuleHandle("KERNEL32.DLL");
pfnExitProcess:=GetProcAddress(hInstance, "ExitProcess");
hThread:=CreateRemoteThread(hProcess, nil, 0, pfnExitProcess, nil, 0,hThread);
if hThread>0 then begin
WaitForSingleObject(hThread, 40000);
if not CloseHandle(hThread) then Result:=GetLastError;
end else Result:=GetLastError;
CloseHandle(hProcess);
end else Result:=GetLastError;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.01.16;
Скачать: CL | DM;

Наверх




Память: 0.44 MB
Время: 0.009 c
1-49085
John
2003-01-05 01:31
2003.01.16
возв.в степень числа


7-49320
Zolen
2002-11-03 00:54
2003.01.16
блокирование CD-Rom


3-48882
std79
2002-12-19 11:42
2003.01.16
Float поле в IB. 6,2 превращает в 6,19999980926514


1-49097
fav
2003-01-05 07:44
2003.01.16
Поле в Grid в виде набора графических картинок


1-49120
gari
2003-01-05 13:25
2003.01.16
Можно ли поменять шрифт в процедуре showmessage()





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский