![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Событие при выходе из приложения [D7, WinXP]
312kbps © (2007-10-05 15:24:00)Уважаемые профессионалы )
есть dll которая цыпляется к некому приложению, скажите, как получить в этой dll событие закрытия приложения ?
Спасибо!
DiamondShark (2007-10-05 17:47:00) [1]
> Не проверял, но я так думаю :)
Практика -- критерий истины.
DrPass (2007-10-05 17:21:00) [2]
> Должны вызываться секции Finalization модулей
Теоретически, не должны. Они не сами по себе вызываются, это делает загрузчик исполняемого файла. А т.к. DLL (в отличии от BPL) грузится в обход загрузчика, то и секции инициализации/финализации выполняться не должны. Не проверял, но я так думаю :)
Инс (2007-10-05 15:54:00) [3]Только надо бы уточнить, что уведомление DLL_PROCESS_DETACH приходит не только при завершении процесса, который загрузил библиотеку, а вообще при выгрузке процессом библиотеки из своего адресного пространства.
312kbps (2007-10-05 15:53:00) [4]спасибо
Инс (2007-10-05 15:50:00) [5]
> Должны вызываться секции Finalization модулей.
Тоже вариант
> можно чутка поподрубнее !? )
library MyLib;
....
procedure DLLEntryPoint(Reason: Integer);
begin
case Reason of
DLL_PROCESS_ATTACH: ...
DLL_PROCESS_DETACH: ...
DLL_THREAD_ATTACH: ...
DLL_THREAD_DETACH: ...
end;
end;
begin
DLLProc:=@DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.
Только если процесс завершить жестко (TerminateProcess) - уведомление DLL_PROCESS_DETACH не придет.
REA (2007-10-05 15:46:00) [6]Должны вызываться секции Finalization модулей. Еще есть трюк с подменой адреса цепочки вызовов при выходе.
312kbps (2007-10-05 15:41:00) [7]
> Инс © (05.10.07 15:36) [1]
можно чутка поподрубнее !? )
спасибо
Инс (2007-10-05 15:36:00) [8]Обрабатывать уведомление DLL_PROCESS_DETACH