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

Вниз

FreeLibrary   Найти похожие ветки 

 
psa247 ©   (2006-01-07 11:27) [0]

Добрый день, подскажите почему при каждом использовании этого фрагмента кода у меня растет количество открытых дескрипторов:


SomeButtonClick(...)
begin
   HMyDll:= LoadLibrary("My.dll");
  @MyDll:= GetProcAddress(HMyDll, "Hook");

   if Assigned(@MyDll)then MyDll(True, 12345);
   if HMyDll<>0 then FreeLibrary(HMyDll);
end;


 
sniknik ©   (2006-01-07 16:52) [1]

а зачем каждый раз dll грузить? сделай проверку по другому

SomeButtonClick(...)
begin
 if Assigned(@MyDll) then begin
    HMyDll:= LoadLibrary("My.dll");
    if HMyDll >= 32 then Raise Exception.Create(xxx);
    @MyDll:= GetProcAddress(HMyDll, "Hook");
    if not Assigned(@MyDll) then Raise Exception.Create(xxx);
 end;

  MyDll(True, 12345);
  //if HMyDll<>0 then FreeLibrary(HMyDll); //освободится по завершении программы (можно и самому позаботится, но лишнее)
end;


 
begin...end ©   (2006-01-07 17:01) [2]

> sniknik ©   (07.01.06 16:52) [1]

> if Assigned(@MyDll) then begin
>    HMyDll:= LoadLibrary("My.dll");

Э-э-э... Можно пояснить?

> if HMyDll >= 32 then Raise Exception.Create(xxx);

Типа, DLL может загружаться только по адресам, меньшим 32? Оригинально.


 
sniknik ©   (2006-01-07 17:37) [3]

> Э-э-э... Можно пояснить?
так в > psa247 ©   (07.01.06 11:27) написано, составлял сдесь "кусками". "идея" - проверка на not nil. если не nil значит кнопочку уже нажимали и процедура подгружена.

> Типа, DLL может загружаться только по адресам, меньшим 32? Оригинально.
наоборот. знак спутал. надо <


 
psa247 ©   (2006-01-07 17:38) [4]

В этом необходимость (грузить/выгружать)

> sniknik ©   (07.01.06 16:52) [1]


 
begin...end ©   (2006-01-07 17:41) [5]

> sniknik ©   (07.01.06 17:37) [3]

> "идея" - проверка на not nil. если не nil значит кнопочку
> уже нажимали и процедура подгружена.

В [1], если процедура подгружена, LoadLibrary вызывается снова.

> наоборот. знак спутал. надо <

Не надо. Надо <> 0.


 
begin...end ©   (2006-01-07 17:43) [6]

> Надо <> 0.

В смысле, если <> 0, то ошибки нет. А в [1] тогда надо "= 0".


 
sniknik ©   (2006-01-07 17:48) [7]

> В [1], если процедура подгружена, LoadLibrary вызывается снова.
да. ;( и сдесь спутал...



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

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

Наверх




Память: 0.48 MB
Время: 0.037 c
14-1135503730
Vudu
2005-12-25 12:42
2006.01.22
Чем можно перегнать Mov файл в avi ?


1-1134734764
OlegNik
2005-12-16 15:06
2006.01.22
Завершение потока TTread;


4-1131921055
zaslavskiy
2005-11-14 01:30
2006.01.22
число записей процеса


8-1123675290
Voron
2005-08-10 16:01
2006.01.22
Как сделать снимок экрана


4-1130998303
M@xim
2005-11-03 09:11
2006.01.22
Microsoft Agent Control