On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 8026
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.09.25 10:40. Заголовок: Сколько времени юзер работал в программе ?


Каждый юзер входит в программу со своим логином и паролем.
Время работы программы считается просто.
А можно ли посчитать сколько юзер РЕАЛЬНО работал в программе ?
И как это сделать ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 12 [только новые]


постоянный участник




Пост N: 4790
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.09.25 15:05. Заголовок: Andrey Веди таблицу..


Andrey
Веди таблицу: user, DtmVxod, DtmVixod,... для всех user
Ставь Filter на user, считай
Если иметь индекс INDEX ON &("upper(user)+hb_TtoS(DtmVxod)") ..., то можешь ставить SCOPE upper(user)+cDat1, upper(user)+cDat2, т.е. за период итоги работы user. user можно представлять кодом из справочника user-ов

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 8027
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.09.25 16:44. Заголовок: SergKis пишет: Веди..


SergKis пишет:

 цитата:
Веди таблицу: user, DtmVxod, DtmVixod,... для всех user


Эта таблица есть, действия юзеров записываю.
Вопрос в другом, юзер скинул программу и включил Яндекс и смотрит кино, или тупо в одноклассниках сидит.
Вот такая работа бывает...

Нужно считать время активной работы программы, т.е. когда юзер в ней работает, т.е. ходит в окнах, ищет что-то и т.д.
Т.е. счёт времени на MAIN форме и всех других формах:
         ON GOTFOCUS  {||  ???? }       ; 
ON LOSTFOCUS {|| ???? }

Или отдельный поток запустить и пускай он считает кол-во времени работы юзера и какие окна открыты ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4791
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.09.25 16:51. Заголовок: Это уже ты делал, в ..


Это уже ты делал, в каком то, примере. Лови события мышки, клавиатуры, ... в блоке SET EVENTS FUNCTION TO bEvents

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 8028
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.09.25 16:52. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это уже ты делал, в каком то, примере.


Это не то...
Или отдельный поток запустить и пускай он считает кол-во времени работы юзера и какие окна открыты ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 8029
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.09.25 15:00. Заголовок: https://i.postimg.cc..



Есть программа учёта времени работы компа и запущенных программ !
Красным цветом - простой компа или программы.
Вот есть бесплатная версия:
https://www.manictime.com/download/windows/olderDownloads

Хотелось бы такое попроще, только на свою программу.
Можно ли как то отслеживать нажатие кнопки в фокусе окна и засечь время нажатия на окне ?
Т.е. если 5 минут юзер на любое окно моей программы не нажимал, то далее пошло время простоя программы.
Если скинул программу на Панель задач или ушёл с задачи на другое окно, то пошло время простоя программы.
      DEFINE WINDOW ....          ; 
....
ON GOTFOCUS ???? ;
ON LOSTFOCUS ????


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8127
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.09.25 17:05. Заголовок: Andrey я тут погугл..


Andrey
я тут погуглил...
если есть подробное описание вот этих отчетиков из 1с , то поищи
отчеты «Активность пользователей» или «Динамика активности пользователей»

ps
Андрей а если юзер запустил построение какого то долгого отчета (минут на 20 скажем) и
переключился на другое окно , то он по твоему активен был или нет ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 8030
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.09.25 17:15. Заголовок: Dima пишет: переклю..


Dima пишет:

 цитата:
переключился на другое окно , то он по твоему активен был или нет ?


Нет не активен. Пока юзер на окне, он активен, если ушёл, то не активен.
Если прога считает отчёт и окно на экране, то юзер активен.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8128
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.09.25 17:29. Заголовок: Andrey пишет: Если ..


Andrey пишет:

 цитата:
Если прога считает отчёт и окно на экране, то юзер активен.


а зачем ему пялиться в бегунок построения отчета 20 минут ?))
ладно , тебе виднее.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 8031
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.09.25 19:45. Заголовок: Dima пишет: а зачем..


Dima пишет:

 цитата:
а зачем ему пялиться в бегунок построения отчета 20 минут ?))


Да нет у меня таких отчётов. Из-за этого и делаю такое допущение.
Отчёт по базе 2 млн. записей (1404 Мб. на диске HDD) считается за: 
SCOPE - время счёта 00:00:10.711 (10 секунд)
DoWhile -> Array - время счёта 00:00:57.393
SCOPE + FILTER - время счёта 00:02:02.459
Условная индексация - время счёта 01:08:17.608


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4793
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.09.25 19:58. Заголовок: Andrey Повторю Лови..


Andrey
Повторю Лови события мышки, клавиатуры, ... в блоке SET EVENTS FUNCTION TO bEvents
В примере (он был у тебя) в bEvents считались WM_... события, сделай счетчики
- PUBLIC oThrInfo := TThrData():New() // для работы в основном и thread потоках для доступа к переменным
- считай в oThrInfo события WM_... по мышке, клавиатуре
- сделай счетчик для форм, хоть на SKIP в циклах
- в thread с циклом, типа таймера, проверяй total по счетчика, если 10 или 20 минут total счетчик не изменился, то user спит или кофе пьет или уже дома ... Если не спит сбрасывай счетчики в 0

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 368
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 09.09.25 16:19. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно ли как то отслеживать нажатие кнопки в фокусе окна и засечь время нажатия на окне ?
Т.е. если 5 минут юзер на любое окно моей программы не нажимал, то далее пошло время простоя программы.
Если скинул программу на Панель задач или ушёл с задачи на другое окно, то пошло время простоя программы.



может считать время состояния Idle ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4797
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.09.25 18:35. Заголовок: MIKHAIL пишет может ..


MIKHAIL пишет
 цитата:
может считать время состояния Idle ?


У Андрея MiniGui, проще в потоке считать минуты, а в блоке SET EVENTS FUNCTION TO bEvents, при наступлении событий WM_..., сбрасывать минуты в 0. Если набралось минут больше указанного, то user типа спит

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 905
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет