Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.009 c
14-49249
gsu
2002-12-26 20:15
2003.01.16
А почему ?


1-48970
Turonix
2003-01-06 07:55
2003.01.16
Как запустить EXE-файл из Делфи?


3-48929
D-NICKNAME
2002-12-21 00:25
2003.01.16
Заполнение базы.


1-48975
ShaH
2003-01-06 15:12
2003.01.16
Как в проект Delphi подключить модуль написанный на C++ Builder e


3-48849
Newer
2002-12-23 13:20
2003.01.16
Как записать графическое изображение в MS SQL, используя ADO?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский