Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Как получить у время бездействия пользователя? (число прочтений - 9615 )
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Как получить у время бездействия пользователя?
30. Октября 2007 :: 12:31
Печать  
Вообщем задача такая:
1.Есть сервер терминалов и юзьверы работает в 1С именно в нем.
2.Админы настроили закрытие сеансов пользователей при их бездействии в течении 2 часов (может быть и другое).
3.Но некоторые нерадивые юзверы помимо того еще и оставляють запущенной 1С .

Естетсвенно после убивания сеанса 1С понимает что ее завалили аварийно.
Возникает соответствующая задача:
1.Как получить время положенное сеансу на бездействие?
2.Как получить время которое текущий сеанс бездействует?

Прошу ногами не бить.
Просто надо.
PS. Отлавливать в 1С ПриДвиженииМыши() и ПриНажатииКнопкиКлавиатуры() не предлогать, до этого я сам додумался.Просто некошерно получается. Может можно как нибуть через скрипты?

  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #1 - 30. Октября 2007 :: 12:52
Печать  
Через WMI можно. Но искать долго.

вариант проще, но дороже - поставить SQL Улыбка
Там пофиг на вылеты.
  
Наверх
 
IP записан
 
vig
Junior Member
**
Отсутствует


Мой опыт показывает, что
умирают обычно другие.

Сообщений: 34
Местоположение: Киев
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #2 - 30. Октября 2007 :: 14:16
Печать  
Интуиция подсказывает, что весия dbf.
Сначала была идея написать скрипт на logoff пользователя, который чистит созданные этим пользователем
файлы *.$lk. Я так понимаю, что именно по наличию этих файлов 1С определяет, что было аварийное завершение
и требуется переиндексация. Но в таком случае, при аварийном завершении 1С и последующем logoff е
пользователя мы теряем информацию о необходимости переиндексации Печаль
Остается тупой выход - в каждой форме вызывать глобальную функцию например, ПриоткрытииЛюбойФормы,
которая обновляет глобальную переменную, полученную _GetPerformanceCounter().
А в обработке ожидания сверять, как давно открывалась любая форма. Если давно, то ЗавершитьРаботуСистемы.
Я пока вижу только этот выход.
  
Наверх
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Как получить у время бездействия пользователя?
Ответ #3 - 30. Октября 2007 :: 14:20
Печать  
Arta писал(а) 30. Октября 2007 :: 12:52:
Через WMI можно. Но искать долго.

вариант проще, но дороже - поставить SQL Улыбка
Там пофиг на вылеты.

1.А больше никак?
2.SQL нельзя.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #4 - 30. Октября 2007 :: 14:25
Печать  
В ВинАпи есть спец. функция для получения времени бездействия пользователя.
Немного разгребусь и добавлю соответствующий либо в 1С++::Информатор, либо в ФормЕкс::Сервис.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
vig
Junior Member
**
Отсутствует


Мой опыт показывает, что
умирают обычно другие.

Сообщений: 34
Местоположение: Киев
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #5 - 30. Октября 2007 :: 14:30
Печать  
Код
Выбрать все
добавлю соответствующий либо в 1С++::Информатор, либо в ФормЕкс::Сервис
 


Будет супер. По-моему, лучше в 1С++::Информатор.
  
Наверх
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Как получить у время бездействия пользователя?
Ответ #6 - 30. Октября 2007 :: 14:34
Печать  
(2) такой подход не годиться.
Потому как юзьвер может работать в базе и анализировать скажем какой нибуть отчет
или продавец открыл форму справочника и только лазить по ней и смотрит на товары цены
и работает только с одной этой формой.
есно она может быть открыта и час и два и более посму данный вариант негодиться.
+ он периодически может прыгать от 1С скажем к Excel и назад причем в 1С ничего не открывая.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Как получить у время бездействия пользователя?
Ответ #7 - 30. Октября 2007 :: 14:37
Печать  
artbear писал(а) 30. Октября 2007 :: 14:25:
добавлю соответствующий либо в 1С++::Информатор, либо в ФормЕкс::Сервис.


Точно было бы здорово.
Так может и чтение времени блокировки рабочего стола можно от туда вытащить?
И предел времени на бездействие сеанса?
  
Наверх
 
IP записан
 
vig
Junior Member
**
Отсутствует


Мой опыт показывает, что
умирают обычно другие.

Сообщений: 34
Местоположение: Киев
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #8 - 30. Октября 2007 :: 14:52
Печать  
(6) Согласен.
  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2344
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #9 - 30. Октября 2007 :: 15:50
Печать  
vig писал(а) 30. Октября 2007 :: 14:30:
Код
Выбрать все
добавлю соответствующий либо в 1С++::Информатор, либо в ФормЕкс::Сервис
 


Будет супер. По-моему, лучше в 1С++::Информатор.

+1, избавлюсь еще от одной dll-ки...
Только вот надо еше подумать как это все использовать и где.
  
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #10 - 30. Октября 2007 :: 16:30
Печать  
trdm писал(а) 30. Октября 2007 :: 15:50:
Только вот надо еше подумать как это все использовать и где.



Например, есть у меня внутренняя почта. И как в аське/миранде у меня вылазит всплывающее окно, когда приходит новое сообщение.
Людям такие фишки интуитивно понятны.
  
Наверх
 
IP записан
 
Alex_D
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Зарегистрирован: 02. Мая 2007
Re: Как получить у время бездействия пользователя?
Ответ #11 - 31. Октября 2007 :: 01:21
Печать  
А если исползовать перехват мыши-клавиатуры из FormEx-а, что-бы сбрасывать счетчик бездействия?
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Как получить у время бездействия пользователя?
Ответ #12 - 31. Октября 2007 :: 06:48
Печать  
Alex_D писал(а) 31. Октября 2007 :: 01:21:
А если исползовать перехват мыши-клавиатуры из FormEx-а, что-бы сбрасывать счетчик бездействия?

Негодиться потому что танцуй не танцуй над Мышкой или клавой, а если окно 1С станет не активным то все перехват пропадает.
А это в корне не верно, да + учесть что в терминале работает от 20 до 30 юзверов то нагрузка на систему будет неочень-то и веселая.

Так что вариант Артура с Информатором это то что надо!
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #13 - 31. Октября 2007 :: 11:03
Печать  
В принципе, я метод реализовал ( Информатор::ПолучитьВремяПростояКомпьютера() ), но в ночную сборку пока не закидывал.
Потому что есть ограничение - метод будет работать только в ВинМЕ/2000/ХП и выше.

Поэтому предварительно я решил выяснить, в каких ОС мы юзаем 1С++.
Прошу голосовать http://www.1cpp.ru/forum/YaBB.pl?num=1193827086/0
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Как получить у время бездействия пользователя?
Ответ #14 - 31. Октября 2007 :: 13:48
Печать  
ОГРОМАДНЕЙШЕЕ СПАСИБО АРТУРУ
Информатор.ПолучитьВремяПростояСистемы()
время в миллисекундах!

Работает на УРА и на локальной машине и в терминальной сесии!
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #15 - 31. Октября 2007 :: 14:02
Печать  
Указанный метод завтра будет в официальной ночной сборке 1С++ вместе с докой на метод.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #16 - 31. Октября 2007 :: 16:45
Печать  
artbear писал(а) 31. Октября 2007 :: 14:02:
Указанный метод завтра будет в официальной ночной сборке 1С++ вместе с докой на метод.

Работоспособность компоненты в вин98 сохранена?
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #17 - 01. Ноября 2007 :: 10:56
Печать  
fez писал(а) 31. Октября 2007 :: 16:45:
Работоспособность компоненты в вин98 сохранена?

Да, конечно.
ЗЫ Федор, я бы не стал принимать столь кардинальное решение в одиночку Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #18 - 01. Ноября 2007 :: 11:31
Печать  
artbear писал(а) 01. Ноября 2007 :: 10:56:
ЗЫ Федор, я бы не стал принимать столь кардинальное решение в одиночку Улыбка

Просто спросил Улыбка
  
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #19 - 16. Декабря 2007 :: 00:45
Печать  
А если надо время простоя программы, а не системы?
У меня в 1С сделана почта/чат. Когда менеджера начинают активно забрасывать письмами, а он забивает документ, то всплывающие окна напрягают. Хотелось бы чтобы открытие таких окон происходило только, предположим, после 5 сек бездействия программы (не тыкали В НЕЙ мышкой, не жмякали В НЕЙ клаву).
Мутить с обработкой ожидания/таймером и запоминать в событиях клавы и мыши _getperfomancecounter()?
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #20 - 22. Сентября 2009 :: 07:43
Печать  
Arta писал(а) 16. Декабря 2007 :: 00:45:
А если надо время простоя программы, а не системы?

+1

С тех пор как у нас перестали пользовать схему "одна 1Ска -- одна терминальная сессия", а стали запускать по доному терминалу на юзера со всей кучей его 1Сок -- стало не видно, какую из них пользователь шевелит а какую бросил.
Артур, может добавишь ещё метод?
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать