Название: Сколько неактивная система Отправлено: pakulo от Май 18, 2007, 15:58 Мне нужно узнать сколько времени прошло после того как пользователь последний раз двинул мышкой или нажал на кнопку клавиатуры... что бы например через 5 минут после отстутсвия каких-либо действий, программа запускала свою работу (ну например перебор чисел), после того как пользователь вернулся, обратно прекращала свою работу.
Название: Re: Сколько неактивная система Отправлено: kitov от Май 18, 2007, 16:09 Запускай таймер после перехваченного события ,
если получил событие , презапускай таймер , нет - по истечении запускай свою задачу . Название: Сколько неактивная система Отправлено: pakulo от Май 18, 2007, 21:45 да, это понятно... самый простой способ, но возможно есть какие-нить другие варанты?
Название: Сколько неактивная система Отправлено: fanat9 от Май 18, 2007, 22:24 Т.е. есть ли уже такой таймер в системе ?
И тебе всё равно нужен свой таймер, чтобы опросить "что-то" через нужный тебе интервал времени =) Название: Сколько неактивная система Отправлено: pakulo от Май 18, 2007, 22:36 ясно, будем думать тогда ))
Название: Сколько неактивная система Отправлено: Gryz от Май 19, 2007, 13:40 Я думаю, что по таймеру надо сравнивать запомненное положение QPoint QCursor::pos () с текущим.
Как с клавиатурой быть, что-то сразу в голову не приходит. Название: Сколько неактивная система Отправлено: kitov от Май 19, 2007, 14:19 Цитата: "Gryz" Я думаю, что по таймеру надо сравнивать запомненное положение QPoint QCursor::pos () с текущим. Как с клавиратурой быть, что-то сразу в голову не приходит. для клавиатуры QKeyEvent , для мыша QMouseEvent и не надо ни какие позиции сравнивать :-) Название: Сколько неактивная система Отправлено: Gryz от Май 19, 2007, 15:04 Если ни одно из окон процесса не является активным, т.е. пользователь вообще не видит нашей программы, а работает, например, в "Проводнике", то никаких QKeyEvent и QMouseEvent наша прога не увидит.
Название: Сколько неактивная система Отправлено: kitov от Май 19, 2007, 15:21 Цитата: "Gryz" Если ни одно из окон процесса не является активным, т.е. пользователь вообще не видит нашей программы, а работает, например, в "Проводнике", то никаких QKeyEvent и QMouseEvent наша прога не увидит. Понятно , нужно определить глобальное бездействие . добавлено спустя 3 минуты: Может с помощью QDesktopWidget ? Название: Сколько неактивная система Отправлено: Gryz от Май 19, 2007, 16:17 Нет. Думаю, надо смотреть в QCoreApplication
добавлено спустя 13 минут: Я так смотрю, что только средствами Qt это никак не сделать... добавлено спустя: Клавиши можно перехватывать платформозависимым путем: http://sources.ru/builder/faq/041.html или forum.sources.ru (http://forum.sources.ru/index.php?act=Search&CODE=show&searchid=fb9eacf4d72321ef67ec93e7aa608eb2&search_in=posts&result_type=topics&highlite=%CF%C5%D0%C5%D5%C2%C0%D2%C8%D2%DC+and+%CD%C0%C6%C0%D2%C8%C5+and+%CA%CB%C0%C2%C8%D8%C8) Название: Сколько неактивная система Отправлено: pakulo от Май 19, 2007, 17:14 Хм... оказалось все не так просто... с мышкой в принципе более-менее понятно, можно узнать глобальное положение мышки и постоянно проверять не равно ли оно предидущему... а вот с клавиатурой проблема... какие могут быть мысли?
Название: Сколько неактивная система Отправлено: Gryz от Май 19, 2007, 17:27 С мышкой когда работаешь, надо засекать время бездействия.
С клавиатурой стандартными средствами Qt - никак. Название: Сколько неактивная система Отправлено: Lion от Май 21, 2007, 12:06 В принципе мышки вполне достаточно, одной клавой мало кто работает.
Название: Сколько неактивная система Отправлено: Gryz от Май 21, 2007, 12:32 Если только много букв не вводит.
Название: Re: Сколько неактивная система Отправлено: Lion от Март 01, 2008, 22:31 Ничего нового по этой теме не появилось?
Название: Re: Сколько неактивная система Отправлено: ритт от Март 02, 2008, 03:13 вносил такое предложение Троллям - ответили, что подобное несложно сделать самостоятельно и они этого делать не будут :)
Название: Re: Сколько неактивная система Отправлено: Вячеслав от Март 02, 2008, 12:15 А отловить системные события ? ScreenSaver'a например - не катит ?
Название: Re: Сколько неактивная система Отправлено: shadone от Март 03, 2008, 15:08 насколько я знаю для таких целей (ресурсоемкая работа при неактивности пользователя) обычно используется отдельный поток с минимальным приоритетом (idle). Это более-менее кроссплатформенный способ. Иначе можно делать разные хаки для разных ОС (типа глобальный хук в windows).
Название: Re: Сколько неактивная система Отправлено: ритт от Март 04, 2008, 14:38 если поток с мин.приоритетом, ресурсоёмкая задача будет выполняться _всегда_, но будет жрать минимум процессорного времени во время работы пользователя
а если надо просто разлогиниться через 15 минут неактивности юзверя? не повесишь же это на отдельный поток с айдлом Название: Re: Сколько неактивная система Отправлено: Вячеслав от Март 04, 2008, 15:04 А в лоб низя ? QAplication->installEventFilter а в нем ловить
QEvent::KeyPress QEvent::MouseButtonDblClick QEvent::MouseButtonPress QEvent::MouseButtonRelease QEvent::MouseMove и перезапускать таймер ? А по таймеру делать нужное ? Название: Re: Сколько неактивная система Отправлено: shadone от Март 04, 2008, 16:11 это будет неактивность только текущего приложения. неактивность всей системы таким образом не отловить.
Название: Re: Сколько неактивная система Отправлено: Lion от Март 05, 2008, 07:54 вносил такое предложение Троллям - ответили, что подобное несложно сделать самостоятельно и они этого делать не будут :) Может попросишь их намекнуть с чего начать?Название: Re: Сколько неактивная система Отправлено: shadone от Март 05, 2008, 10:33 trolltech очень открытая компания работающая над open-source. и как и в любом другом open-source проекте никто вам не мешает сделать собственный класс и прислать патч. если он будет соответствующего качества то конечно мы его включим в библиотеку.
Название: Re: Сколько неактивная система Отправлено: ритт от Март 05, 2008, 11:30 пример, http://trolltech.com/developer/task-tracker/index_html?id=192203&method=entry
Название: Re: Сколько неактивная система Отправлено: shadone от Март 05, 2008, 11:42 пример, http://trolltech.com/developer/task-tracker/index_html?id=192203&method=entry Вижу два патча, один из них твой. как тебе и ответили - после выхода 4.4 (т.к. таска появилась после 4.4 feature freeze) эта таска будет переназначена. Кстати в январе она уже была назначена на 4.5.Несмотря на то что патч небольшой, это не тривиальная задача просто применить патч и закоммитить - требуется написать unit-тесты, проверить что этот патч не поломает другие способы загрузки картинок (например из ресурсов, или работу QIcon). Название: Re: Сколько неактивная система Отправлено: ритт от Март 06, 2008, 13:03 прекрасно понимаю про тестирование...у меня, к примеру, не открываются svgz-шки, сгенерированные корелом 13 сп1 (причём, ганзип ругается на префикс --)
а что он может сломать, если сначала проверяется сигнатура и, если отсутствует, используется "родной" способ загрузки? ну, не суть в общем...приоритет 2 уже позволяет рассчитывать на реализацию функционала я просто привел пример к "если он будет соответствующего качества то конечно мы его включим в библиотеку" Название: Re: Сколько неактивная система Отправлено: QCasper от Апрель 01, 2010, 11:23 По этой задаче никто не нашел решения? Пусть даже платформозависимым способом.
Название: Re: Сколько неактивная система Отправлено: Lion от Ноябрь 13, 2010, 12:17 Вопрос все еще актуален, кто знает решение отпишитесь, пожалуйста.
Название: Re: Сколько неактивная система Отправлено: Пантер от Ноябрь 13, 2010, 12:22 В psi это есть. Исходники открыты.
Название: Re: Сколько неактивная система Отправлено: wanick от Апрель 19, 2011, 03:37 Вот примерно что-то такого получается и все работает
Код: .... только что написал еще ладом не протестировал , но сразу вижу 2 минуса, 1. не работает на Linux 2. не учитывает "полезное бездействие" , например просмотр фильма... все элементарные действия пользователя отлавливает , включая нажатия кнопок мыши Название: Re: Сколько неактивная система Отправлено: SABROG от Апрель 19, 2011, 11:46 По этой задаче никто не нашел решения? Пусть даже платформозависимым способом. Вот (http://stackoverflow.com/questions/2482103/getlastinputinfo-equivalent-in-linux-to-detect-last-input-time), может пригодиться. Название: Re: Сколько неактивная система Отправлено: wanick от Апрель 19, 2011, 18:09 вот немного переработал и сдела удобнее для использвания
пример использования аналагичен QTimer (в аттаче) Код: inactive = new QMInaction; Недостатки 1. не работает в linux(надеюсь пока) 2. не учитывает событие скрола колесом 3. не учитывает включен ли полезный процесс, например просмотр кинофильма Что есть startSignal() - срабатывает при запуске . вызов метода start() stopSignal() - при остановке. вызов метода stop() timeout() - тоже сигнал , срабатывает при достижении нужного времени бездействия(в секундах) inactiverestart(unsigned short) - сигнал срабатывает при сбросе счетчика когда сработало какое-то действие пока расширять функционал не планирую, т.к. для моей задачи то что получилось вполне результативно... может кому пригодится P.S. прошу сильно не критиковать т.к. на C++ пишу не более 3-4 дней. |