Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как отследить дейсвия пользователя / 16 сообщений из 16, страница 1 из 1
07.06.2012, 13:21
    #37829362
Woldemar665
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
Есть программа (WPF). Если пользователь ничего не делает в течении определенного времени, то она должна свернуться в трэй и при развертывании выдать окно для ввода пароля. По поводу свернуть/развернуть/показать окно вопросов нет.
Интересует другое : Понятно что тут должен быть таймер который обнуляется как только пользователь что-то сделает. Но не вешать же на ВСЕ события обработчик который будет обнулять таймер. Может кто-то подскажет в каких событиях обнулять таймер, или скажите как это можно сделать подругому.
...
Рейтинг: 0 / 0
07.06.2012, 13:37
    #37829392
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
Woldemar665,

раскажи, а как описывается ситуация, когда юзер , что-то сделал?
...
Рейтинг: 0 / 0
07.06.2012, 13:43
    #37829400
Как отследить дейсвия пользователя
тк в этой задаче точная формулировка не важна
то можно сформулировать неактивность пользователя так
нажималась ли кнопка мыши или клавиатуры
а эти события можно отследить
...
Рейтинг: 0 / 0
07.06.2012, 13:44
    #37829404
Woldemar665
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
AlexeiK,

Нажал кнопку, ввел/изменил какое-то поле, заюзал скролл, проскто кликнул куда-то. Вроде все
...
Рейтинг: 0 / 0
07.06.2012, 13:47
    #37829410
Woldemar665
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
ответ тевто,

так это нада вешать на каждый контрол событие KeyDown, MouseLeftButtonDown и MouseRightButtonDown. А этого хотелось бы избежать.
...
Рейтинг: 0 / 0
07.06.2012, 14:41
    #37829546
Как отследить дейсвия пользователя
надо хук на мышь и клавиатуру вешать
с помощью SetWindowsHookEx
а не на каждый контрол
...
Рейтинг: 0 / 0
07.06.2012, 14:49
    #37829567
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
ответ тевто,

проще конечно, override WndProc сделать.
...
Рейтинг: 0 / 0
07.06.2012, 14:54
    #37829585
enigmatic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
А behaviours никак не помогут в данной ситуации?
...
Рейтинг: 0 / 0
07.06.2012, 15:01
    #37829592
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
enigmatic,

это какие такие?
я тут спутал, думал это winforms.
...
Рейтинг: 0 / 0
07.06.2012, 15:15
    #37829634
Как отследить дейсвия пользователя
AlexeiKпроще конечно, override WndProc сделать.


да уж проще если окон штук 100
и они создается и удаляются постоянно
...
Рейтинг: 0 / 0
07.06.2012, 15:19
    #37829643
F#
F#
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
...
Рейтинг: 0 / 0
07.06.2012, 15:24
    #37829654
Как отследить дейсвия пользователя
F#.


читаю хелп и не вижу
где там сказано что это касается процесса
это системная фича для всего десктопа
...
Рейтинг: 0 / 0
07.06.2012, 15:30
    #37829669
Как отследить дейсвия пользователя
есть еще во фрейворках Idle событие
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/811f5706-b9d7-414c-a590-cb9f6108b564
...
Рейтинг: 0 / 0
07.06.2012, 17:40
    #37829969
Woldemar665
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
Сделал так:
1. Тунельным событиям окна назначил обработчик:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            userIdleTime = 0;
            e.Handled = false;
        }

        private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            userIdleTime = 0;
            e.Handled = false;
        }


2. И запустил таймер:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
        public MainWindow()
        {
                DispatcherTimer timer = new DispatcherTimer(
                    TimeSpan.FromMinutes(1.0),
                    DispatcherPriority.ApplicationIdle,
                    new EventHandler(Timer_Tick),
                    Application.Current.Dispatcher);
                timer.Start();
                userIdleTime = 0;
        }

        private void Timer_Tick(object sender, EventArgs e)
        {
            userIdleTime++;
            if (userIdleTime >= 5)
            {
                        private void Timer_Tick(object sender, EventArgs e)
        {
            userIdleTime++;
            if (userIdleTime >= 5)
            {
                SetInactive();
                userIdleTime = 0;
                timer.Stop();
            }
        }


3. После ввода пароля снова запускаю таймер
...
Рейтинг: 0 / 0
07.06.2012, 17:42
    #37829976
Woldemar665
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
Сори, немного провтыкал
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        public MainWindow()
        {
                DispatcherTimer timer = new DispatcherTimer(
                    TimeSpan.FromMinutes(1.0),
                    DispatcherPriority.ApplicationIdle,
                    new EventHandler(Timer_Tick),
                    Application.Current.Dispatcher);
                timer.Start();
                userIdleTime = 0;
        }

        private void Timer_Tick(object sender, EventArgs e)
        {
            userIdleTime++;
            if (userIdleTime >= 5)
            {
                SetInactive();
                userIdleTime = 0;
                timer.Stop();
            }
        }
...
Рейтинг: 0 / 0
07.06.2012, 17:47
    #37829989
Woldemar665
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить дейсвия пользователя
ответ тевто,
ответ тевтоесть еще во фрейворках Idle событие
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/811f5706-b9d7-414c-a590-cb9f6108b564

Там немного не та задача. Они хотят выполнять какие-то действия раз в 10 мин, если приложение не занято. Но пост полезный, спасибо.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как отследить дейсвия пользователя / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]