Форум: "Основная";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
ВнизСобытие при выходе из приложения Найти похожие ветки
← →
312kbps (2007-10-05 15:24) [0]Уважаемые профессионалы )
есть dll которая цыпляется к некому приложению, скажите, как получить в этой dll событие закрытия приложения ?
Спасибо!
← →
Инс © (2007-10-05 15:36) [1]Обрабатывать уведомление DLL_PROCESS_DETACH
← →
312kbps (2007-10-05 15:41) [2]
> Инс © (05.10.07 15:36) [1]
можно чутка поподрубнее !? )
спасибо
← →
REA (2007-10-05 15:46) [3]Должны вызываться секции Finalization модулей. Еще есть трюк с подменой адреса цепочки вызовов при выходе.
← →
Инс © (2007-10-05 15:50) [4]
> Должны вызываться секции 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 не придет.
← →
312kbps (2007-10-05 15:53) [5]спасибо
← →
Инс © (2007-10-05 15:54) [6]Только надо бы уточнить, что уведомление DLL_PROCESS_DETACH приходит не только при завершении процесса, который загрузил библиотеку, а вообще при выгрузке процессом библиотеки из своего адресного пространства.
← →
DrPass © (2007-10-05 17:21) [7]
> Должны вызываться секции Finalization модулей
Теоретически, не должны. Они не сами по себе вызываются, это делает загрузчик исполняемого файла. А т.к. DLL (в отличии от BPL) грузится в обход загрузчика, то и секции инициализации/финализации выполняться не должны. Не проверял, но я так думаю :)
← →
DiamondShark © (2007-10-05 17:47) [8]
> Не проверял, но я так думаю :)
Практика -- критерий истины.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c