Название: отлов сообщения Windows WM_SYSCOMMAND. Отправлено: Sanya от Июнь 08, 2010, 17:13 Доброго времени суток!
Уперся в следующую проблему: Код
После вызова liba::proc появляется некий интерфейс и после окончания своей работы присылает проге сообщение. Прога это сообщение не обрабатывает, т.е. вообще не попадает в winEventFilter после отработки app.exec(). Есть аналог кода на MSVC WinAPI и он работает, т.е. сообщение ловится. Подскажите где может быть загвоздка, пожалуйста! Название: Re: отлов сообщения Windows WM_SYSCOMMAND. Отправлено: Sanya от Июнь 09, 2010, 08:36 Ну неужели никто с этим не сталкивался или просто никто не знает?
Название: Re: отлов сообщения Windows WM_SYSCOMMAND. Отправлено: Авварон от Июнь 09, 2010, 09:15 писать на qt и юзать LoadLibrary... мдаа
в доке написано Цитировать It is only directly addressed messages that are filtered. To handle system wide messages, such as messages from a registered hot key, you need to install an event filter on the event dispatcher, which is returned from QAbstractEventDispatcher::instance(). может это ваш случай?Название: Re: отлов сообщения Windows WM_SYSCOMMAND. Отправлено: Sanya от Июнь 09, 2010, 09:20 По поводу LoadLibrary:
даю вам честное слово, что до этого там было QLibrary::load() вместо LoadLibrary. QAbstractEventDispatcher::instance() - тоже стаил, не попадает он туда(в дебаге ставил брекпоинты). Название: Re: отлов сообщения Windows WM_SYSCOMMAND. Отправлено: SABROG от Июнь 09, 2010, 10:52 Может дело в том, что WM_*, то есть Windows Messages и ОС нужно хотябы одно окно для того, чтобы это сообщение послать.
Если это консольная программа, то собирается ли она с "CONFIG += console" или просто запускается из-под cmd? Название: Re: отлов сообщения Windows WM_SYSCOMMAND. Отправлено: Sanya от Июнь 09, 2010, 11:40 Да, я тоже думал в сторону без оконья. Но переопределив таким образом:
Код программа вообще сваливалась при запуске. Пробывал Код но опять же не помогло. CONFIG += console - стоит Название: Re: отлов сообщения Windows WM_SYSCOMMAND. Отправлено: kil89 от Июль 30, 2010, 17:58 наверное приложение умирает при старте потому что функция EventFilter должна возвращать ложь для удачно прошедших сообщений. проще говоря нужно в конце функции приписать return false;
иначе она их убивает и приложение не получает нужных для своей работы сообщений Название: Re: отлов сообщения Windows WM_SYSCOMMAND. Отправлено: SASA от Август 02, 2010, 10:12 Прога это сообщение не обрабатывает, т.е. вообще не попадает в winEventFilter после отработки app.exec(). Т.е. цикл разбора сообщений отработал и после этого сообщения не обрабатываются. Странно :) Название: Re: отлов сообщения Windows WM_SYSCOMMAND. Отправлено: sergek от Август 03, 2010, 12:30 После вызова liba::proc появляется некий интерфейс и после окончания своей работы присылает проге сообщение. Прога это сообщение не обрабатывает, т.е. вообще не попадает в winEventFilter после отработки app.exec(). Метод QApplication::exec() лишь запускает процесс обработки сообщений. Цикл обработки сообщений организуется обычно в виджете, а его нет. Поэтому программа после запуска процесса мирно заканчивается. Можно попробовать обработать всю очередь сообщений QCoreApplication::processEvents. |