![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 23.11.2006
Сообщений: 53
|
![]()
Собственно, процесс закрытия программы.
в основной форме : Код:
Код:
Код:
Я опять бессилен здесь... Получается, что иногда первой выгружается не сама программа (как правильно должно быть), а библиотека из какого-нибудь процесса...и вылетает ошибка. Как можно это исправить ? Последний раз редактировалось Nowichok; 13.12.2006 в 21:20. |
![]() |
![]() |
![]() |
#12 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
а тебе какой порядок нужен?
|
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 23.11.2006
Сообщений: 53
|
![]()
По идее...при выходе из программы самой (основной), сначала она выгружается..а потом всё выгружается из других процессов. Но видать и не так даже, т.к. ошибки вылазят, когда просто закываю приложение (аську, проигрыватель и т.п.)...в них выскакивает ошибка, а другие (вообще третьи приложения), просто тихо-мирно закрываются (агент например). Где-то видать ошибка в памяти ,которая сразу не видна...а потом даёт о себе знать.
Я могу дать всю программу,дабы понять проблему,там легко разобраться ,ничего сложного нет. Всё откомментированно.. |
![]() |
![]() |
![]() |
#14 | |
Пользователь Подтвердите свой е-майл
Регистрация: 14.12.2006
Сообщений: 29
|
![]() Цитата:
Во-вторых: любой хук перехватывает сообщения. Также многие программы, поддерживающие плагины (например винамп), используют сообщения. Т.е. суть их плагинов в том, что они принимают сообщения от других программ и реагируют на них. Системное сообщение WM_USER создано специально для этих целей и имеет произвольный код. Если возникает конфликт кодов вылетает ошибка. Также известны многочисленные глюки при использовании хук'а. Например: во время его работы перехватываемые клавиши залиапли. Но: Сообщения не единственный путь поддержки плагинов. Поэтому программы поддерживающие плагины другого вида или не поддерживающие плагины - ошибок не выдают. Рекомендую перед закрытием убивать все хуки и т.д. а потом выгружаться. Еще ощибка может возникать при попытке хука отдать значение нажатой клавиши несуществующюму (странное получилось слово)))) приложению. Т.е. при установке хука мы указываем хэндл принимающей формы. Если приложение закрылось, а хук остался - он продолжает посылать сообщения с кодом клавишы (без принимающей формы - в никуда). ИМХО как показывает практика - поблема не в ошибке, а в ее последствиях. Если после убийства вылетит ошибка, которая не на что не влияет, можно использовать: try ...//код except ...//обработчик ошибки - можно оставить пустым end; зы при испильзовании этого кода, в откомпилированном приложении ошибки не вылетают, однако при запуске из делфы - оная информирует об их наличии.
какой вопрос, такой ответ..
Последний раз редактировалось Drop; 15.12.2006 в 05:11. |
|
![]() |
![]() |
![]() |
#15 |
Пользователь
Регистрация: 23.11.2006
Сообщений: 53
|
![]()
ага..поступил, как предложили - стал сначала выгружать хук при выгрузке самой библиотеки. В Delphi перестала вылетать ошибка -кул. Но эт не всё.
Обнаружилось, что при выходе из основной программы, она выгружает из своего АП библиотеку...а в других процессаах она висит..это вполне могло быть всему причиной. Я не понимаю...как ваще доходит до других процессов, что основная прога выгружена, и надо выгрузить из своего АП библиотеку ?? ...я выгружаю библиотеку из основной программы..а как до других программ доходит, что после этого нужно выгрузить и у себя её ? ?? Может выгружаю неправильно....при выходе из самой программы Код:
|
![]() |
![]() |
![]() |
#16 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]()
чей пускай висит в другихпроцессах жалко что ли
главное что бы она перестала хук обрабатывать Последний раз редактировалось rpy3uH; 16.12.2006 в 09:05. |
![]() |
![]() |
![]() |
#17 |
Пользователь
Регистрация: 23.11.2006
Сообщений: 53
|
![]()
т.е. если библиотека не выгружена, то и хук не выгружен !!!!! Да и в принципе это некрасивый стиль программирования получается. Если библиотека висит, значит dll-файл нельзя удалить (к примеру)...это уже нехорошо.
Последний раз редактировалось Nowichok; 16.12.2006 в 09:11. |
![]() |
![]() |
![]() |
#18 |
Пользователь Подтвердите свой е-майл
Регистрация: 14.12.2006
Сообщений: 29
|
![]()
чет я наверно торможу... каким образом она попадает в другие поцессы, если ты загружаешь ее только в свое приложение?
какой вопрос, такой ответ..
|
![]() |
![]() |
![]() |
#19 |
Пользователь
Регистрация: 23.11.2006
Сообщений: 53
|
![]()
хмм...с этим сам слабо разобрался. Глобальный хук ставится на все процессы, хук должен ОБЯЗАТЕЛЬНО быть описан в библиотеке. А каким образом он грузится в процесс - мне не низвестно. Создал новую ветку по этой тематике в разделе Delphi->Общее (вроде)
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание новых таблиц в Access через Delphi | mopozoff | БД в Delphi | 25 | 05.12.2009 20:18 |
Создание кнопки зная HWND окна(рабочий стол) | WOLFak | Компоненты Delphi | 1 | 07.04.2008 07:45 |
Создание окна при получение определенного пакета | GHOST_Kasper | Общие вопросы Delphi | 5 | 06.02.2008 13:01 |
Создание обьектов файловой системы через делфи | BETONOMESHALKA | Общие вопросы Delphi | 2 | 26.12.2007 22:17 |
создание cgi для сохранения на сервере exe файла преданного через http | L0rD | Работа с сетью в Delphi | 2 | 22.06.2007 12:52 |