|
Модераторы: gambit, Kefir, Partizan |
|
vikaz |
|
||||||||||||
Опытный Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 1 Всего: 12 |
Всем привет.
Эпопея с установкой хука на ОС для определенной комбинации клавиш продолжается. :( Проблема, которая возникла на данный момент, это работа WinApi функции UnregisterHotKey. После завершения приложения, хук остается в системе и окно с тестовым сообщением, продолжает появляться после завершения программы. При этом, я никак не могу выбить хук из системы. Сначала, это было забавным, когда приложения выгруженное из памяти (но видимо ссылка где-то остается), продолжало показывать тестовое сообщение на комбинацию клавиш, которую я задал при регистрации, но сейчас от смеха не осталось и следа. Был написан следующий класс:
Вспомогательный класс, который необходим для работы HotKey:
Вот как я работаю с этими классами в mvvm классе:
В классе HotKey я реализовал интерфейс IDisposable. И при выходе из приложения я вижу, как вызывается метод ~HotKey(), который в свою очередь вызывает Dispose(), который выбивает хук из системы. Т.е. объект удаляется, как нужно и весь код относящийся к удалению хука, так же выполняется. Но почему хук остается в системе, для меня так и осталась загадкой. :( Как может появляться сообщение "HotKey", когда приложение уже закрыто? Подскажите, в чем может быть проблема. Спасибо! UPD: Добавил функцию получения ошибки в функцию Unregistred:
Мне вернулся код 1419, который как бы мне говорит, что HotKey не зарегистрирован. (http://msdn.microsoft.com/en-us/library/windows/desktop/ms681385(v=vs.85).aspx). Это меня очень удивило. А когда я заново запускаю приложение, то регистрация возвращает ошибку с кодом 1409,которая сообщает, что HotKey уже зарегистрирован. :( UPD2: Я не знаю от чего это зависит, но эта проблема уходит если вырубить VS! Т.е. если VS закрыто, а я запускаю приложение через exe файл, то все работает нормально. И при закрытии приложения, никаких тестовых окон не всплывает. Осталось понять почему так. Ну и почему при UnRegistered возвращается код 1419 не понятно! UPD3: И все же какая-то проблема с самим классом HotKey. У этого класса метод Unregistered публичный. Я добавил кнопки на форму (start и stop) и вызывал их через команды:
Когда вызывается метод UnregisteredHotkey, код ошибки = 0!!!! :( Но как только закрываю приложения, этот же код (UnregisteredHotkey) возвращает ошибку 1419! :( -------------------- Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
||||||||||||
|
|||||||||||||
jonie |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 2 Всего: 118 |
Для справки:
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||
|
|||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |