| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > выгрузка DLL с хуком |
| Автор: ScrewDriver 6.1.2005, 15:13 |
| Подскажите пжалуста, как выгрузить библиотечку с хуком, выхожу из вызвавшей DLL проги - библиотека не выгружается. Висит в памяти до перезагрузки! Мож кто сталкивался с такой проблемой - помогите. |
| Автор: xAnejl 6.1.2005, 15:24 |
| У меня все выгружалось, кинь код на форум, посмотрим |
| Автор: _hunter 6.1.2005, 15:29 |
| ты хук отцепляеш? |
| Автор: RA 6.1.2005, 16:48 | ||
Мне кажется такого быть не может. |
| Автор: _hunter 6.1.2005, 16:52 |
| почему не может? у меня такое было |
| Автор: Леша 6.1.2005, 23:50 |
| Если хук остановить, то дэ-эл-эл"ка висит в памяти еще некоторое время... Например, нельзя заново ее скомпилить... Этот вопрос меня тоже волнует. (Надеюсь никто не в обиде из модеров что не создал новую тему...) Но вот чтобы до перезагрузки... Нет так не бывает... |
| Автор: _hunter 6.1.2005, 23:53 |
| почему не бывает? библиотека висит пока хук висит, а хук висит пока его не снимут. а если не снимают -- то как раз до перезагрузки библиотека висеть и будет |
| Автор: Леша 7.1.2005, 21:43 | ||
| Повторяюсь:
И все-таки. Мне порой приходилось очень долго ждать прежде чем перекомпилть дллку... А это убивает время на тестинг... Кто знает выход? |
| Автор: RA 7.1.2005, 22:46 | ||
Интересный касяк. А при этом dll работала? (ну в смысле выполняла свои обязанности), или просто как мусор в памяти осталась? и ещё это в XP? Вот у меня тут предположение появилось из-за чего длл себя неправильно ведёт. Быть может это связанно с использованием WaitForSingleObject |
| Автор: _hunter 8.1.2005, 00:05 |
| Леша, еще ра з повторюсь: а хук отцепил? RAdmin, что значит работала? функции из нее нормально экспортировались; просто с отцеплением косяки были ( как раз из-за оставленного хука ) |
| Автор: ScrewDriver 8.1.2005, 12:09 |
| library ms; uses WinTypes, WinProcs, Messages; var SaveExitProc : Pointer; HookHandle : hHook; function MH(Code: integer; wParam: word; lParam: Longint): Longint; export; stdcall; var tl : ^MSG; begin if Code >= 0 then begin tl := Pointer(lParam); ... ... ... Result:=0; end else Result := CallNextHookEx(HookHandle,Code, wParam, lParam); end; procedure LocalExitProc; begin if HookHandle<>0 then begin UnhookWindowsHookEx(HookHandle); ExitProc := SaveExitProc; end; end; exports MH; begin HookHandle := SetWindowsHookEx(WH_GETMESSAGE, @MH, hInstance, 0); if HookHandle = 0 then MessageBox(0, 'Unable to set hook!', 'Error', mb_Ok) else begin SaveExitProc := ExitProc; ExitProc := @LocalExitProc; end; end. Вот моя либа :-) Вродь все отцепил... Да, вот еще, как я понимаю, библиотека должна загружаться по первому вызову импортируемой функции (У мя просто - pointer := @MH) но она загружается когда ГРУЗИТСЯ проект или УСТАНАВЛИВАЕТСЯ (install) NT сервис, если она из сервиса вызывается ессна. как бороться??? у мя WinXP Delphi6,7 |
| Автор: ScrewDriver 8.1.2005, 12:13 |
| висит я соврал - не до перезагрузки - до перелогинения (но не всегда иногда, редко, все-тки до перезагрузки - но енто имхо просто системный глюк). Я даж делфю перезапускал - не помогает. |
| Автор: ScrewDriver 8.1.2005, 12:19 |
| висит я соврал - не до перезагрузки - до перелогинения (но не всегда иногда, редко, все-тки до перезагрузки - но енто имхо просто системный глюк). Я даж делфю перезапускал - не помогает. |
| Автор: Леша 8.1.2005, 14:37 |
| Под Вашим, _hunter, "отцепил", я и имею в виду остановил... Или я уж совсем корявый термин использую, или Вы невнимательны. И все же вопрос в силе?! |
| Автор: _hunter 9.1.2005, 01:52 |
| понятно... тогда еще вопрос: второй раз DllMain вызывается? |
| Автор: Леша 9.1.2005, 03:15 |
| _hunter, нет |