![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DLL_PROCESS_DETACH / DLL_PROCESS_ATTACH [D5, WinME]
AlexandrR © (2002-09-04 22:51:00)Привет всем!
У меня проблема.
Переопределяю я DLLProc и пытаюсь ловить subj. И вроде делаю стандартно, но все-таки ничего не ловится. DllEntryPoint вызывается, но со значениями где-то ~1000-2000.
Вот кусок кода:
procedure DLLEntryPoint(dwReason: Integer); stdcall;
var hThread:THandle;
thrID:Cardinal;
begin
case dwReason of
DLL_PROCESS_ATTACH: Begin // On load
DLL_PROCESS_DETACH: Begin// On UnLoad
End;
end;
end;
/////////////////////////////////////////////////////////////////
begin
DLLProc:= @DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.
Делаяю на VC++ - все работает как надо
AlexandrR (2002-09-05 22:20:00) [1]Всем спасибо!
Digitman (2002-09-05 11:06:00) [2]факт вызова блока инициализации модуля вполне можно интерпретировать как DLL_PROCESS_ATTACH или DLL_THREAD_ATTACH (в зависимости от код.потока, вызвавшего LoadLibrary : в случае основного - DLL_PROCESS_ATTACH , в случае дополнительного - DLL_THREAD_ATTACH)
Старый Паскалист (2002-09-05 10:47:00) [3]В качестве DllEntryPoint в паскале всегда выступает
ф-я _InitLib из sysinit.pas.
А DllProc - процедура, к-рую она из себя вызывает.
Причём так как DllProc назначается в рантайме (когда ДЛЛ уже загружена), то DLL_PROCESS_ATTACH ты никогда через DllProc не поймаешь.
Ученик (2002-09-05 09:37:00) [4]>Almaz © (05.09.02 02:04)
И от меня спасибо, угораздило же меня скопировать из той ветки в "Полезное" :-)
p.s опечатки, сорри
Ученик (2002-09-05 08:37:00) [5]>Almaz © (05.09.02 02:04)
И от меня спасибо, угороздало же меня скопировать из той ветки в "Полезное" :-)
Almaz (2002-09-05 02:04:00) [6]Убери stdcallв объявлении процедуры DLLEntryPoint.
Удачи.