Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
81 / 49 / 19
Регистрация: 11.03.2013
Сообщений: 549
Записей в блоге: 5
1

Отследить действие пользователя (за компьютером он или нет)

08.11.2018, 13:14. Показов 1049. Ответов 6
Метки нет (Все метки)

Добрый день господа, помогите решить проблемку.
Мне нужно понять находится ли пользователь за компьютером или нет.
Есть форма, на ней таймер, сколько уже запущена программа.
Но вот как мне понять, вдруг пользователь включил программу и ушёл пить чай. А таймер то работает. Как мне отследить за компом он или нет.
В теории предполагаю, что можно отследить курсор. Если курсор не двигается уже 5 минут, останавливать таймер.

Вот только как реализовать не пойму.
Помогите разобраться с мышью
Отследить действие пользователя (за компьютером он или нет)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2018, 13:14
Ответы с готовыми решениями:

Следят за моим компьютером или нет?
Здравствуйте, помогите пожалуйста успокоить душу)) Недавно на работе начальник забрал мой...

Отследить, активна программа или нет
хотел бы запустить таймер если пользователь скрыл или работает в другой программе, а если снова...

Возможно ли отследить пользователя который в сети через Tor или мобильный интернет?
Могут ли правоохранители отследить абонента городской сети который сидит через Тор? Можно ли...

Стандартное действие Search. действие Find - нет результатов поиска
Добрый вечер! Столкнулся с такой проблемой, что стандартное действие find, которое должно искать...

6
81 / 49 / 19
Регистрация: 11.03.2013
Сообщений: 549
Записей в блоге: 5
08.11.2018, 14:35  [ТС] 2
Отлавливаю нажатие (при помощи MouseGlobalHook)
Но с таймером никак не могу разобраться.
C#
1
2
3
4
5
  public void MouseMoved(object sender, MouseEventArgs e)
        {
            label1.Text = String.Format("x={0}  y={1} wheel={2}", e.X, e.Y, e.Delta);
           if (e.Clicks > 0)  Label2.Text = "Нажата кнопка мыши  - " + e.Button.ToString());
            }
как теперь проверить то нажатие на мышку? Мол если на мышь не кликают, запустим таймер с обратным отчётом на 180 сек. Как время отработает гасить основной таймер.
0
Администратор
Эксперт .NET
13960 / 11323 / 4590
Регистрация: 17.03.2014
Сообщений: 22,882
Записей в блоге: 1
08.11.2018, 15:34 3
anomal6, предлагаю периодически вызывать метод GetLastInputInfo (pinvoke.net) в еще одном таймере с интервалом, скажем, в 30 сек.
1
81 / 49 / 19
Регистрация: 11.03.2013
Сообщений: 549
Записей в блоге: 5
09.11.2018, 08:29  [ТС] 4
Цитата Сообщение от OwenGlendower Посмотреть сообщение
anomal6, предлагаю периодически вызывать метод GetLastInputInfo (pinvoke.net) в еще одном таймере с интервалом, скажем, в 30 сек.
Сделал аналогично только использовал класс GlobalHook
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public int timerDis; 
 if (e.Clicks > 0)    //Если нажата любая клавиша мыши
            {
               
                tmrMouse.Stop();
                tmrOnline.Start();
                tmrOnline.Interval = 1000;
                
 
            }
            else
            {
                timerDis = 240;
                tmrMouse.Start();
                tmrMouse.Interval = 1000;
            }
p.s. На будущее обязательно возьму на вооружение
0
Администратор
Эксперт .NET
13960 / 11323 / 4590
Регистрация: 17.03.2014
Сообщений: 22,882
Записей в блоге: 1
09.11.2018, 09:24 5
anomal6, а если человек набирает текст не пользуясь мышкой?
0
81 / 49 / 19
Регистрация: 11.03.2013
Сообщений: 549
Записей в блоге: 5
09.11.2018, 09:42  [ТС] 6
Цитата Сообщение от OwenGlendower Посмотреть сообщение
anomal6, а если человек набирает текст не пользуясь мышкой?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void MainFormLoad(object sender, System.EventArgs e)
        {
 actHook = new UserActivityHook();
actHook.KeyPress+=new KeyPressEventHandler(MyKeyPress);
}
public void MyKeyPress(object sender, KeyPressEventArgs e)
        {
            LogWrite("KeyPress  - " + e.KeyChar);
        }
private void LogWrite(string txt)
        {
            richtextBox.AppendText(txt + Environment.NewLine);//Можно вывести не только в richtextbox
            richtextBox.SelectionStart = richtextBox.Text.Length;
        }

В примере выше будет сбрасываться в textbox
По аналогии как и с мышкой, приводим к запуску таймера

C#
1
2
3
4
5
if(e.KeyChar != null)
{
//Продолжим таймер
}
else { //Стартуем наши таймеры }
Но работоспособность данного Класса я не тестировал, и на всякий я бы его в try catch засунул

А вот собственно и сам ГлобалХук
Кликните здесь для просмотра всего текста
0
Администратор
Эксперт .NET
13960 / 11323 / 4590
Регистрация: 17.03.2014
Сообщений: 22,882
Записей в блоге: 1
09.11.2018, 11:07 7
anomal6, ок. Просто хотел убедиться что ты не забыл про клавиатуру.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2018, 11:07

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

Нужно сохранить пользователя(он зашел или нет)
дело в том что есть авторизация, человек логиниться в одном активити, если успешно то идет на...

Отследить нажатие ссылки и выполнить действие
Всем привет! Ребят подскажите направление как можно реализовать вот такую нужную фишку: У...

Отследить изменение значения переменной и выполнить действие
Всем доброго времени суток. Минуту назад хотел уже написать было сюда просьбу о помощи. Но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru