|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.12.2006, 21:15 | #11 |
Пользователь
Регистрация: 23.11.2006
Сообщений: 53
|
Собственно, процесс закрытия программы.
в основной форме : Код:
Код:
Код:
Я опять бессилен здесь... Получается, что иногда первой выгружается не сама программа (как правильно должно быть), а библиотека из какого-нибудь процесса...и вылетает ошибка. Как можно это исправить ? Последний раз редактировалось Nowichok; 13.12.2006 в 21:20. |
14.12.2006, 20:23 | #12 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
а тебе какой порядок нужен?
|
14.12.2006, 21:03 | #13 |
Пользователь
Регистрация: 23.11.2006
Сообщений: 53
|
По идее...при выходе из программы самой (основной), сначала она выгружается..а потом всё выгружается из других процессов. Но видать и не так даже, т.к. ошибки вылазят, когда просто закываю приложение (аську, проигрыватель и т.п.)...в них выскакивает ошибка, а другие (вообще третьи приложения), просто тихо-мирно закрываются (агент например). Где-то видать ошибка в памяти ,которая сразу не видна...а потом даёт о себе знать.
Я могу дать всю программу,дабы понять проблему,там легко разобраться ,ничего сложного нет. Всё откомментированно.. |
15.12.2006, 04:43 | #14 | |
Пользователь Подтвердите свой е-майл
Регистрация: 14.12.2006
Сообщений: 29
|
Цитата:
Во-вторых: любой хук перехватывает сообщения. Также многие программы, поддерживающие плагины (например винамп), используют сообщения. Т.е. суть их плагинов в том, что они принимают сообщения от других программ и реагируют на них. Системное сообщение WM_USER создано специально для этих целей и имеет произвольный код. Если возникает конфликт кодов вылетает ошибка. Также известны многочисленные глюки при использовании хук'а. Например: во время его работы перехватываемые клавиши залиапли. Но: Сообщения не единственный путь поддержки плагинов. Поэтому программы поддерживающие плагины другого вида или не поддерживающие плагины - ошибок не выдают. Рекомендую перед закрытием убивать все хуки и т.д. а потом выгружаться. Еще ощибка может возникать при попытке хука отдать значение нажатой клавиши несуществующюму (странное получилось слово)))) приложению. Т.е. при установке хука мы указываем хэндл принимающей формы. Если приложение закрылось, а хук остался - он продолжает посылать сообщения с кодом клавишы (без принимающей формы - в никуда). ИМХО как показывает практика - поблема не в ошибке, а в ее последствиях. Если после убийства вылетит ошибка, которая не на что не влияет, можно использовать: try ...//код except ...//обработчик ошибки - можно оставить пустым end; зы при испильзовании этого кода, в откомпилированном приложении ошибки не вылетают, однако при запуске из делфы - оная информирует об их наличии.
какой вопрос, такой ответ..
Последний раз редактировалось Drop; 15.12.2006 в 05:11. |
|
15.12.2006, 20:46 | #15 |
Пользователь
Регистрация: 23.11.2006
Сообщений: 53
|
ага..поступил, как предложили - стал сначала выгружать хук при выгрузке самой библиотеки. В Delphi перестала вылетать ошибка -кул. Но эт не всё.
Обнаружилось, что при выходе из основной программы, она выгружает из своего АП библиотеку...а в других процессаах она висит..это вполне могло быть всему причиной. Я не понимаю...как ваще доходит до других процессов, что основная прога выгружена, и надо выгрузить из своего АП библиотеку ?? ...я выгружаю библиотеку из основной программы..а как до других программ доходит, что после этого нужно выгрузить и у себя её ? ?? Может выгружаю неправильно....при выходе из самой программы Код:
|
16.12.2006, 09:03 | #16 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
чей пускай висит в другихпроцессах жалко что ли
главное что бы она перестала хук обрабатывать Последний раз редактировалось rpy3uH; 16.12.2006 в 09:05. |
16.12.2006, 09:09 | #17 |
Пользователь
Регистрация: 23.11.2006
Сообщений: 53
|
т.е. если библиотека не выгружена, то и хук не выгружен !!!!! Да и в принципе это некрасивый стиль программирования получается. Если библиотека висит, значит dll-файл нельзя удалить (к примеру)...это уже нехорошо.
Последний раз редактировалось Nowichok; 16.12.2006 в 09:11. |
16.12.2006, 16:34 | #18 |
Пользователь Подтвердите свой е-майл
Регистрация: 14.12.2006
Сообщений: 29
|
чет я наверно торможу... каким образом она попадает в другие поцессы, если ты загружаешь ее только в свое приложение?
какой вопрос, такой ответ..
|
16.12.2006, 16:37 | #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 |