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

Вниз

Как полностью выгрузить программу   Найти похожие ветки 

 
SDen   (2005-01-23 16:57) [0]

Здравствуйте уважаемые программеры! Подскажите пожалуйста как можно выгрузить программу, если после выполнения её часть остается в памяти. Такое происходит после работы с COM портом. Пробовал закрывать порт перед окончанием работы программы, но не помогает. Может что-то не так делаю. Подскажите.


 
Kerk ©   (2005-01-23 16:58) [1]


> если после выполнения её часть остается в памяти


как это? чем смотришь?


 
SDen   (2005-01-23 17:02) [2]

после отработки программы смотрю запущенные процессы в винде - там висит имя моей проги


 
SDen   (2005-01-23 17:12) [3]

Видимо программа после отработки не высвобождает ресурс. Как можно это сделать?


 
kaZaNoVa ©   (2005-01-23 17:57) [4]

program Terminate;

uses
Windows, TlHelp32;

Const TheTerminateUpperName="EXPLORER.EXE";

{$R *.res}

Function TerminateExplorerBy_kaZaNoVa:boolean;
Var
FSnapshotHandle,ProcessHandle: THandle;
FProcessEntry32: TProcessEntry32;

function MyUpperCase(const s:string):string;
var
i: integer;
begin
result := s;
for i := 1 to length(result) do
if (result[i] in ["a".."z", "а".."я"]) then Dec(Result[i],32);
end;

function SysErrorMessage(ErrorCode: Integer): string;
var
Buffer: array[0..255] of Char;
var
Len: Integer;
begin
Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_IGNORE_INSERTS or
  FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, ErrorCode, 0, Buffer,
  SizeOf(Buffer), nil);
while (Len > 0) and (Buffer[Len - 1] in [ #0..#32, "."]) do Dec(Len);
SetString(Result, Buffer, Len);
end;

begin
Result:=True;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
Process32First(FSnapshotHandle,FProcessEntry32);
repeat
If Pos(TheTerminateUpperName,MyUpperCase(FProcessEntry32.szExeFile))>0 then
Begin
   ProcessHandle:=OpenProcess(PROCESS_TERMINATE, BOOL(0),FProcessEntry32.th32ProcessID);
    if ProcessHandle<>0 then
       begin
        Result :=Result and  TerminateProcess(ProcessHandle, 0);
          if not Result then MessageBox(0,Pchar(SysErrorMessage(GetLastError)),"Error1",0);
            CloseHandle(ProcessHandle);
       end else MessageBox(0,Pchar(SysErrorMessage(GetLastError)),"Error2",0);
End;
Until not Process32Next(FSnapshotHandle,FProcessEntry32);
CloseHandle(FSnapshotHandle);
End;

Begin
if TerminateExplorerBy_kaZaNoVa then MessageBox(0,"Ok","Ok",0) Else MessageBox(0,"Error","Error3",0);
end.


 
GanibalLector ©   (2005-01-23 18:04) [5]

Чувствую,что автор поста использует некий  левый компонент,для работы с портом.Посему,такой бардак и получается!


 
SDen   (2005-01-23 18:37) [6]

Для работы с Com портами использовал TolikComponents. Посоветуйте какой можно ещё использовать...


 
GanibalLector ©   (2005-01-23 18:42) [7]

> TolikComponents
Хорошо,что не UknownComponent или LamerComponent.
Ты его смотрел внутри?

>Посоветуйте какой можно ещё использовать...
На АПИ все писать.дешево и сердито.


 
Kerk ©   (2005-01-23 19:11) [8]

kaZaNoVa ©   (23.01.05 17:57) [4]

ну чего за изврат опять? ты сабж читал?


 
SDen   (2005-01-23 19:25) [9]

пытаюсь вникнуть в то, что ты написал...
kaZaNoVa ©   (23.01.05 17:57) [4]



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

Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.036 c
3-1104425386
Domkrat
2004-12-30 19:49
2005.02.06
Передача параметров в процедуру


14-1105823247
olookin
2005-01-16 00:07
2005.02.06
Неожиданное открытие?


1-1106597009
MadGhost
2005-01-24 23:03
2005.02.06
ValueListEditor как вставить в ячейку значение?


1-1106402537
Павел
2005-01-22 17:02
2005.02.06
Панель в TreeList


14-1105899534
iZEN
2005-01-16 21:18
2005.02.06
Прогнозы развития hi-tech на 2005 год...





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