Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.044 c
2-1196481525
San1712
2007-12-01 06:58
2007.12.23
Возникает сообщение об ошибке как его обработать ?


2-1196057501
simon
2007-11-26 09:11
2007.12.23
Unicode в базе данных


15-1195624952
Stanislav_
2007-11-21 09:02
2007.12.23
Админу


15-1195157054
palva
2007-11-15 23:04
2007.12.23
Тут недавно спрашивали, как шифроваться в аське


15-1196159536
All More system
2007-11-27 13:32
2007.12.23
Разработка динамического сайта





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