Имя: Пароль:
1C
1C 7.7
v7: Бездействующий терминальный сеанс
0 АЛьФ
 
23.12.20
10:29
1С запускается утром из планировщика для для выполнения автоматических действий. В настройках терминальных сеансов стоит "ограничение бездействующих сеансов" - 1 час, и галка "Завершить сеанс".
Что можно пнуть со стороны 1С, чтобы винда восприняла это, как действие пользователя и скинула счетчик бездействия? Пытался вызывать SendKey, не помогает.
Решение надо именно со стороны 1С. Настройку бездействия не меняем.
1 acht
 
23.12.20
10:49
Бездействие терминального сеанса определяется не по активности программы, а по поступление данных через канал от клиента. А там все сложно, например, если сеанс свернут, свежая винда начинает заниматься "оптимизацией" и перестает посылать в канал мышь и клавиатуру вообще, даже если они прилетели нужному хендлу. Это где-то хачится в реестре, ЕМНИП, но там много и другого геморроя.

Запускай сеанс непосредственно на сервере
2 АЛьФ
 
23.12.20
10:52
2(1) Понятно. Большое спасибо.
3 Aleksey
 
23.12.20
11:01
(2) Привязать телефон к мышки поставить будильник каждый час, чтобы он  вибрировал и шевелил мышкой
4 prince64
 
23.12.20
13:48
(3) сложная аппаратная схема. Вполне достаточно проги - автонажималки кнопок. Задать таймер, чтобы раз в N время двигать мышкой
5 Ёпрст
 
23.12.20
13:52
(0) домен ?
В групповых политиках можно конкретному юзверю переназначить эти параметры
6 АЛьФ
 
23.12.20
13:54
2(5) Решение надо именно со стороны 1С. Настройку бездействия не меняем.
7 arsik
 
гуру
23.12.20
13:55
(5) Ну можно и без домена, у конкретного пользователя терминального сервера увеличить время органичения.
8 Ёпрст
 
23.12.20
13:55
в 1cpp был метод
https://www.1cpp.ru/docum/icpp/html/Informer.html#getidletimeofsystem
мот есть и обратный ?..
9 arsik
 
гуру
23.12.20
13:56
(6) тогда никак
10 Cthulhu
 
23.12.20
13:59
скрипт autoit3
кстати, аутоит - прикольная штука. позволяет быстренько слепить и отладить довольно мощные и тонкие инструменты.
11 Ёпрст
 
23.12.20
14:03
А открытие стороннего окна.. это время не отменяют ?..типа ie какой-нить открыть/закрыть.. или блокнот
12 АЛьФ
 
23.12.20
14:20
Обращаю внимание, что система реально не бездействует, а молотит данные. Просто действий пользователя никаких нет.

2(10) Есть пример вызова из 1С?
13 АЛьФ
 
23.12.20
14:21
2(11) Запускается 1С в качестве удаленного приложения. Без рабочего стола.
14 Cthulhu
 
23.12.20
14:35
(12): конечно есть. давно слепил exe-шник, меняющий заголовки окон и тасующий их как надо (по строке параметров) - запускаю его как надо из 1с и вперел. там и мышкой можно поелозить и потыкать.
15 Cthulhu
 
23.12.20
14:36
ЗЫ: тупой вопрос: а если приостанавливать и задавать вопрос с тайаутом?..
16 АЛьФ
 
23.12.20
14:39
2(15) А что это даст?
17 uno-group
 
23.12.20
15:51
А зачем ограничивать сеанс для робота, если после выполнения автоматических действий он может завершить сеанс самостоятельно.
18 Ёпрст
 
23.12.20
16:05
(17) там не роботу, там всем ограничен.
Хотя, это можно обойти, тупо роботу в групповых политиках дать другие настройки
19 АЛьФ
 
23.12.20
16:19
2(17) У нас вот такой вот админ.
20 mistеr
 
23.12.20
16:22
(0) Запускайте этот сеанс прямо на сервере
21 uno-group
 
23.12.20
16:34
На локальном компе отключать подключение убивая РДП сеанс и переподключаться с какойто переодичностью.
22 ELEA26
 
23.12.20
16:52
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys("{SCROLLLOCK}")
WScript.Sleep 3600000
23 uno-group
 
23.12.20
16:53
На стороне сервера если известен ИП с которого подключается этот рдп сеанс можно периодически обрывать сеть на этого клиента
Типа route add 192.168.1.20 mask 255.255.255.0 192.168.1.255 и через минуту удалять этот маршрут командой route delete 192.168.1.20 mask 255.255.255.0 192.168.1.255
20- ип машины с сеансом. 255 несуществующий в сети ип.
Насколько помню обрыв и востановление сети он воспринимает как какую то активность на стороне клиента.
Можно проверить тупо вытянув сетевой шнур у клиента и вставив его назад через какое то время.
24 ELEA26
 
23.12.20
16:53
ну не 3600000 а там 2000000
25 Ёпрст
 
23.12.20
16:54
(22) дык не работает это, ТС уже делал
26 ELEA26
 
23.12.20
16:57
так он на клиенте делал или внутри, на сервере?
Изнутри, из сеанса - никак.
27 АЛьФ
 
23.12.20
17:00
2(21) Запускается из планировщика. Доступны только действия из 1С.
2(22) Так не работает. Писал в (0), что пытался использовать SendKey.
2(23) Опять же не из 1С это делать надо будет, а снаружи.
28 ELEA26
 
23.12.20
17:01
изнутри никак. увы.
29 uno-group
 
23.12.20
17:09
(27) команда системы(...), запустить приложение и делаем два батника
модно эти действия в планировщике не клиенте прописать
30 ELEA26
 
23.12.20
17:12
(29) да не отработает оно изнутри. Хоть VLC с видосиком запускай. Только с клиента что-то может получиться.
31 uno-group
 
23.12.20
17:29
(30) только что проверил при обрыве сети и последующем ее востановление idle time сбрасывается на 0.
прописав кривой маршрут мы обрываем сеть. и после востановления сети таймер начинает считать с 0.
32 АЛьФ
 
23.12.20
17:31
2(31) Что-то мне подсказывает, что 1С при этом весело потеряет SQL-сервер.
33 acht
 
23.12.20
17:35
(31) Осталось только вычислить адрес TS клиента, соединения от которого надо занулить.
Ну и, по-хорошему, рвать его исключительно для текущего процесса.
34 ELEA26
 
23.12.20
17:36
не должен. Если RDP клиент и сервер 1Ц не одно лицо.
35 uno-group
 
23.12.20
17:36
(32) С какого перепугу мыж меняем маршрут от терминального сервера на клиентскую машину. не трогая маршруты терминального сервера и скл.
36 acht
 
23.12.20
17:38
(35) Ну, зато можно внезапно получить адрес маршрутизатора и весело грохнуть соединения сразу для всех =)
37 ELEA26
 
23.12.20
17:58
Ну раз такая пьянка:
cports.exe /close <Local Address> <Local Port> <Remote Address> <Remote Port>
с https://www.nirsoft.net/utils/cports.html
аналог TcpView, но можно с командной строки шалить
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший