Russian Qt Forum
Июнь 16, 2024, 19:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Сколько неактивная система  (Прочитано 16472 раз)
ритт
Гость
« Ответ #15 : Март 02, 2008, 03:13 »

вносил такое предложение Троллям - ответили, что подобное несложно сделать самостоятельно и они этого делать не будут Улыбающийся
Записан
Вячеслав
Гость
« Ответ #16 : Март 02, 2008, 12:15 »

А отловить системные события ? ScreenSaver'a например - не катит ?
Записан
shadone
Гость
« Ответ #17 : Март 03, 2008, 15:08 »

насколько я знаю для таких целей (ресурсоемкая работа при неактивности пользователя) обычно используется отдельный поток с минимальным приоритетом (idle). Это более-менее кроссплатформенный способ. Иначе можно делать разные хаки для разных ОС (типа глобальный хук в windows).
Записан
ритт
Гость
« Ответ #18 : Март 04, 2008, 14:38 »

если поток с мин.приоритетом, ресурсоёмкая задача будет выполняться _всегда_, но будет жрать минимум процессорного времени во время работы пользователя

а если надо просто разлогиниться через 15 минут неактивности юзверя? не повесишь же это на отдельный поток с айдлом
Записан
Вячеслав
Гость
« Ответ #19 : Март 04, 2008, 15:04 »

А в лоб низя ? QAplication->installEventFilter а в нем ловить
QEvent::KeyPress
QEvent::MouseButtonDblClick
QEvent::MouseButtonPress
QEvent::MouseButtonRelease
QEvent::MouseMove
 и перезапускать таймер ? А по таймеру делать нужное ?
Записан
shadone
Гость
« Ответ #20 : Март 04, 2008, 16:11 »

это будет неактивность только текущего приложения. неактивность всей системы таким образом не отловить.
Записан
Lion
Гость
« Ответ #21 : Март 05, 2008, 07:54 »

вносил такое предложение Троллям - ответили, что подобное несложно сделать самостоятельно и они этого делать не будут Улыбающийся
Может попросишь их намекнуть с чего начать?
Записан
shadone
Гость
« Ответ #22 : Март 05, 2008, 10:33 »

trolltech очень открытая компания работающая над open-source. и как и в любом другом open-source проекте никто вам не мешает сделать собственный класс и прислать патч. если он будет соответствующего качества то конечно мы его включим в библиотеку.
Записан
ритт
Гость
« Ответ #23 : Март 05, 2008, 11:30 »

пример, http://trolltech.com/developer/task-tracker/index_html?id=192203&method=entry
Записан
shadone
Гость
« Ответ #24 : Март 05, 2008, 11:42 »

Вижу два патча, один из них твой. как тебе и ответили - после выхода 4.4 (т.к. таска появилась после 4.4 feature freeze) эта таска будет переназначена. Кстати в январе она уже была назначена на 4.5.
Несмотря на то что патч небольшой, это не тривиальная задача просто применить патч и закоммитить - требуется написать unit-тесты, проверить что этот патч не поломает другие способы загрузки картинок (например из ресурсов, или работу QIcon).
Записан
ритт
Гость
« Ответ #25 : Март 06, 2008, 13:03 »

прекрасно понимаю про тестирование...у меня, к примеру, не открываются svgz-шки, сгенерированные корелом 13 сп1 (причём, ганзип ругается на префикс --)
а что он может сломать, если сначала проверяется сигнатура и, если отсутствует, используется "родной" способ загрузки?

ну, не суть в общем...приоритет 2 уже позволяет рассчитывать на реализацию функционала
я просто привел пример к "если он будет соответствующего качества то конечно мы его включим в библиотеку"
Записан
QCasper
Гость
« Ответ #26 : Апрель 01, 2010, 11:23 »

По этой задаче никто не нашел решения? Пусть даже платформозависимым способом.
Записан
Lion
Гость
« Ответ #27 : Ноябрь 13, 2010, 12:17 »

Вопрос все еще актуален, кто знает решение отпишитесь, пожалуйста.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #28 : Ноябрь 13, 2010, 12:22 »

В psi это есть. Исходники открыты.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
wanick
Гость
« Ответ #29 : Апрель 19, 2011, 03:37 »

Вот примерно что-то такого получается и все работает
Код:
....
#include <windows.h>
....
myclass::myclass()
{
....
    keyControl = new QTimer();
    keyControl->setInterval(1000);
    keyControl->start();

    connect(keyControl, SIGNAL(timeout()), this, SLOT(keyControlEvent()));
    secondSleep = 0;
    curX = QCursor::pos().x();
    curY = QCursor::pos().y();
....
}
....

void myclass::keyControlEvent()
{
    if(curX != QCursor::pos().x() || curY != QCursor::pos().y())
    {
        curX = QCursor::pos().x();
        curY = QCursor::pos().y();
        keyIndex = 256;
    }

    int index = 1;
    while (index < 256)
    {
        unsigned short result = GetAsyncKeyState(index);

        if (result !=  0)
        {
            keyIndex = index;

            while (result != 0)
            {
                result = GetAsyncKeyState(index);
            }
            index = 1;
        }
        index++;
    }

    if(keyIndex == 0)
    {
        secondSleep++;
        if(secondSleep % 60 == 0)
        {
            qDebug(QString("Comp sleep %1 min").arg(secondSleep/60));
        }
    }
    else
    {
        secondSleep = 0;
    }
    keyIndex = 0;

}

только что написал еще ладом не протестировал ,
но сразу вижу 2 минуса,  
1. не работает на Linux
2. не учитывает "полезное бездействие" , например просмотр фильма...

все элементарные действия пользователя отлавливает , включая нажатия кнопок мыши
« Последнее редактирование: Апрель 19, 2011, 03:40 от wanick » Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 22.