Блокировка клавы и мышки.

Обсуждение программ nnCron и nnCron LITE

Блокировка клавы и мышки.

Postby Halfer » Fri, 05 Sep 2008, 04:08

Упростил задачу из хелпа:
Code: Select all
#( block_Input
Time: START-TIME
   WINAPI: BlockInput USER32.DLL
   : BlockTheInput TRUE BlockInput DROP ;
   : UnblockTheInput FALSE BlockInput DROP ;
Action:
   BlockTheInput
   60000 PAUSE
   UnblockTheInput
)#

Как видите, при старте ннкрона должны блокироваться клава и мышка. Делается это для того, что бы юзвери сразу не запускали задачи, т.к. эта поспешность иногда приводит к ошибкам программы, после которых задачи вообще не стартуют. Задача отрабатывает нормально, но есть два замечания:
1. Блокировка происходит секунд через 10 после загрузки рабочего стола и это сводит на "нет" весь смысл задачи для меня.
2. После блокировки клавы и мышки достаточно нажать CTRL+ALT+DEL и блок снимается.
Как можно разрулить мой вопрос?
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Блокировка клавы и мышки.

Postby makrus » Fri, 05 Sep 2008, 11:15

Halfer
...
Как можно разрулить мой вопрос?
Предлагаю следующий алгоритм издевательств над пользователями:
При залогинивании пользователя запускаешь цикл с задержкой допустим в полсекунды в котором:
- выключаешь монитор;
- перемещаешь мышь в наиболее безопасную точку экрана;
- проверяешь завершились ли твои задачи (проверяя переменную или файл-флаг) и если завершились, то выходишь из цикла;
На выходе из цикла включаешь монитор и благодаришь за терпение вынужденных неудобств. :prayer:
Можно еще или перед циклом или даже внутри него залочить машину для большей надежности.
все познается в сравнении
makrus
 
Posts: 336
Joined: Mon, 12 Jul 2004, 14:46
Location: Волгоград

Re: Блокировка клавы и мышки.

Postby Halfer » Mon, 08 Sep 2008, 01:25

makrus wrote:Можно еще или перед циклом или даже внутри него залочить машину для большей надежности.

Вся фишка в том, что я писал именно про задачи nnCron. Ещё раз. Если при старте системы, сразу после загрузки рабочего стола, пользователи запускают задачи nnCron'а, то выскакивает ошибка. Точно процитировать содержание не могу, но на какой-то токен пользователя ругается, вроде. После этого сервис крона тупо не запускается в автоматическом режиме и помогает только запуск в ручную. Я хотел блокировать пользователям возможность запускать задачи nnCron, скажем, первые 30 секунд, чтобы дать время сервису запуститься.
makrus wrote: - выключаешь монитор;

Это как?
makrus wrote:Можно еще или перед циклом или даже внутри него залочить машину для большей надежности.

Как я понял, лок снимается просто - тупо жмём CTRL+ALT+DEL и всё, лок снят!
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Блокировка клавы и мышки.

Postby makrus » Mon, 08 Sep 2008, 05:47

Halfer
Вся фишка в том, что я писал именно про задачи nnCron.
Тогда на мой взгляд все еще проще, в начале задач которые они пытаются запускать сделай проверку - выполнились ли те задачи которые должны были и если нет - выходи из задачи... Если они запускают задачи через иконку nnCron'а, то можно еще и иконку спрятать и показать только после выполнения обязательных задач.
Это как?
MONITOR-OFF
Как я понял, лок снимается просто - тупо жмём CTRL+ALT+DEL и всё, лок снят!
Я про другой лок: LockWorkstation из lock_workstation.spf , кстати, позиционировать мышь можно в район поля ввода логина и дополнительно делать левый клик, тогда ввести пароль точно не получится :wink:
все познается в сравнении
makrus
 
Posts: 336
Joined: Mon, 12 Jul 2004, 14:46
Location: Волгоград

Re: Блокировка клавы и мышки.

Postby Halfer » Tue, 09 Sep 2008, 00:35

makrus wrote:Тогда на мой взгляд все еще проще, в начале задач которые они пытаются запускать сделай проверку - выполнились ли те задачи которые должны были и если нет - выходи из задачи... Если они запускают задачи через иконку nnCron'а, то можно еще и иконку спрятать и показать только после выполнения обязательных задач

И снова меня не поняли. Ещё раз. Загружается рабочая станция. После загрузки рабочего стола сервис nnCron ещё не активен какое-то время. Именно в этот момент пользователи запускают задачи крона, тем самым его сервис уже не запускается и вываливается ошибка, что-то про "токен пользователя" пишется.
Попробовал использовать LockWorkstation, не понравилось :-( Да и нет смыла в этом, ведь пользователи, парасята, успевают запускать задачи ещё до старта сервиса nnCron'а, т.е. ни блокировки, ни локи не сработают ещё. Похоже, вопрос нужно решать другим путём.
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Блокировка клавы и мышки.

Postby makrus » Tue, 09 Sep 2008, 08:12

Halfer
Похоже, вопрос нужно решать другим путём
Хозяин, как говорится, барин, но если захочешь продолжить, то я постараюсь уточнить действительно не понятные мне моменты:
ведь пользователи, парасята, успевают запускать задачи ещё до старта сервиса nnCron'а, т.е. ни блокировки, ни локи не сработают ещё
1. Служба nnCron'а, на дефолтных настройках, стартует еще до того как залогинется какой-нибудь пользователь, и, соотвественно, пользователь может этому помешать только если нажмет на "Reset".
2. Они задачи запускают или пытаются запустить? Я сталкивался с сообщениями про "токен пользователя" (это бывает очень редко, иногда само проходит, а иногда помогает только перезапуск винды), и они появляются при попытке nnCron'ом запустить задачи, а не в процессе их выполнения (соотвествующие сообщения выводятся в лог).
Ты сам можешь воспроизвести данную ситуацию или же описываешь ее со слов и по предположениям?
3. Как пользователи запускают задачи? Хоткей? Ярлык?
После загрузки рабочего стола сервис nnCron ещё не активен какое-то время
Если это действительно так, то это не нормально и надо выяснять почему у тебя такое происходит...
Можешь описАть алгоритм стабильного повторения получения сообщения про "токен пользователя"? И на содержимое nncron.ini было бы интересно глянуть.
все познается в сравнении
makrus
 
Posts: 336
Joined: Mon, 12 Jul 2004, 14:46
Location: Волгоград

Re: Блокировка клавы и мышки.

Postby Halfer » Tue, 09 Sep 2008, 08:35

makrus wrote:2. Они задачи запускают или пытаются запустить? Я сталкивался с сообщениями про "токен пользователя" (это бывает очень редко, иногда само проходит, а иногда помогает только перезапуск винды), и они появляются при попытке nnCron'ом запустить задачи, а не в процессе их выполнения (соотвествующие сообщения выводятся в лог).

Да, именно так - в процессе выполнения задачи, через START-APPW запускается программа. Если сразу после загрузки рабочего стола запустить задачу, которая в свою очередь запустит экзешник, то практически всегда выскакивает ошибка и ругается на токен пользователя. Я почему-то грешил именно на сервис. На эту мысль меня натолкнула задача, каторая запускалась по START-TIME. Фишка в том, что она запускалась где-то через 5 секунд после загрузки рабочего стола, следовательно, возникла мысль что сервис запускается с опозданием.
makrus wrote:на содержимое nncron.ini было бы интересно глянуть.

Содержимое стандартное, сам ни чего не менял в конфигурации. На нескольких компах одна и таже бадяга.
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Блокировка клавы и мышки.

Postby makrus » Tue, 09 Sep 2008, 10:19

Halfer
Да, именно так - в процессе выполнения задачи, через START-APPW запускается программа
А я вот думаю что совсем не так..., что бы в этом моменте окончательно разобраться в задачу с которой такое происходит сразу после Action: вставь строчку:
S" Задача стартовала!" CRON-LOG
и добейся появления сообщения с "токен пользователя" для этой задачи, затем открывай лог и смотри: если там только строка вида:
...CLASSIC-TASK-#-YourTask: Не могу получить токен текущего пользователя. Неверный дескриптор.
то прав я :yawinkle: , а если там мелькнет и
...Задача стартовала!
то прав ты :oops: и задачи действительно запускаются и только потом возникает эта ошибка.
Я посмотрел свои логи, так вот подобные ошибки появляются для задач в которых имеется AsLoggedUser и при этом совсем не обязательно что бы в них был запуск каких-либо програм...
На эту мысль меня натолкнула задача, каторая запускалась по START-TIME. Фишка в том, что она запускалась где-то через 5 секунд после загрузки рабочего стола, следовательно, возникла мысль что сервис запускается с опозданием
Вопросы на засыпку: "Как ты определяешь когда она запустилась?" и "Как ты определяешь что рабочий стол загрузился?"

Я все больше склоняюсь к мысли что пользователи тут совсем не причем, а дело именно в винде (ее настройках) на тех машинах где такое происходит.
все познается в сравнении
makrus
 
Posts: 336
Joined: Mon, 12 Jul 2004, 14:46
Location: Волгоград

Re: Блокировка клавы и мышки.

Postby Halfer » Wed, 10 Sep 2008, 04:29

makrus wrote:Я посмотрел свои логи, так вот подобные ошибки появляются для задач в которых имеется AsLoggedUser и при этом совсем не обязательно что бы в них был запуск каких-либо програм...

Так и есть, задачи запускаются от текущего пользователя, т.к. перед запуском нужной программы проверяется наличие файлов на расшаренном сетевом диске.
makrus wrote:Вопросы на засыпку: "Как ты определяешь когда она запустилась?"

Я зделал тестовую задачу, которая запускалась по START-TIME и блокировала клаву и мышку.
makrus wrote:"Как ты определяешь что рабочий стол загрузился?"

Нашим пользователям паралельно, запустился рабочий стол или нет. Если они видят что значки появились на рабочем столе, сразу пытаются запустить задачу. Ни чего не мешает мне административно запретить им запускать программы по крайней мере первую минуту. Но хочется понять почему ошибка выскакивает и почему блок клавы и мышки срабатывыет через некоторое время после загрузки значков на рабочем столе?
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Блокировка клавы и мышки.

Postby makrus » Wed, 10 Sep 2008, 08:56

Halfer
Я зделал тестовую задачу, которая запускалась по START-TIME и блокировала клаву и мышку.
Т.е. ты залогиниваешься и ждешь когда курсор перестанет отрабатывать твои перемещения мыши, считая при этом секунды? Почему ты успеваешь сосчитать более чем до "раз" - см. ниже, но вместо START-TIME более корректно использовать WatchLogon: "*" (вместо * можно вписать конкретного пользователя), ну блокировку так же, пожалуй, лучше заменить на, например
S" Залогинились" CRON-LOG
и уже в логе смотреть когда nnCron "увидел" что ты залогинился и успел записать это в файл, можно с секундомером следить :D и вычислять разницу во времени, и мне почему-то кажется что она будет меньше чем та которую ты определял до этого, хоть и не на много.
Нашим пользователям паралельно, запустился рабочий стол или нет.
С вашими "парасятами" все понятно - они везде такие :yawinkle: , я интересовался "моментом запуска рабочего стола" потому что ты же от этого момента отсчитывал 5 секунд, вот я и хотел оценить, хоть примерно, это время, это действительно много или все в "пределах погрешности".
Если они видят что значки появились на рабочем столе, сразу пытаются запустить задачу.
Попробую узнать еще раз - как они запускают задачи?
Но хочется понять ... почему блок клавы и мышки срабатывыет через некоторое время после загрузки значков на рабочем столе?
Ну ты же понимаешь что мгновенно сработать не сможет? Нужно время..., даже если предположить что кроме процесса nncron.exe нет больше ни одного - все равно нужно определенное количество тактов процессора что бы выполнить код nnCron'а, обращение к данным, пересылка их в памяти - тоже требует время, и процессов не менее десятка и у некоторых из них приоритет больше чем у nncron.exe и каждый торопится выполнить свою задачу в такой "переломный" момент как - залогинивание, та же прорисовка иконок на рабочем столе требует, как минимум получение их изображений, пусть даже и из кэша и выполняется системным процессом (точно каким не знаю, наверное explorer.exe); наверняка не одна и не две программы в автозагрузке по залогиниванию прописаны в реесте - они тоже запускаются и требуют процессорного времени, плюс еще параметры железа влияют на "5 сек"..., поэтому из всего что ты сказал пока трудно сделать вывод: 5 сек - это много или мало, а для начала надо бы еще и выяснить - 5 сек или 3 или может 10?
Но хочется понять почему ошибка выскакивает ...?
Повторюсь еще раз, мне кажется дело не в пользователях, а в компах, а именно в настройках винды (права в первую очередь) и nnCron'а (но это вряд ли)..., т.е. данные ошибки появляются не потому что их пользователь запустил, а потому что пришло время выполнить задачу, а nnCron не может "получить токен текущего пользователя"...
Если у тебя есть несколько машин на которых такое регулярно повторяется - попробуй сравнить их настройки с настройками на тех где такое не бывает вообще (если такие есть).
PS. По поводу "борьбы" с "парасятами" появилась еще такая идея: делаешь скриншот рабочего стола с непрорисовавшимися иконками и при залогинивании выводишь в полноэкранном режиме с помощью, например, IrfanView 'ера (в реестре пропиши, или же nnCron'ом), ну, а когда уже будет можно - "открываешь глаза" пользователю на "реальное положение дел" :D
все познается в сравнении
makrus
 
Posts: 336
Joined: Mon, 12 Jul 2004, 14:46
Location: Волгоград

Re: Блокировка клавы и мышки.

Postby Halfer » Thu, 11 Sep 2008, 05:35

Наблюдаю разделение темы на два вопроса:
1. Откуда берётся ошибка, связанная с невозможностью получения "токена пользователя" при запуске задачи.
2. Как же всё-таки заблокировать пользователю клаву и мышку при старте системы.

Итак, по первому пункту. Посидел немного на "проблемных" компах и попробовал отловить ошибку. Отловил. Действительно, если запустить задачу сразу после загрузки иконок на рабочем столе через ярлык с параметром такого вида:
Code: Select all
nnCron.exe -run "имя задачи"
то выскакивает ошибка, цитирую её полностью:
Не могу получить токен текущего пользователя. Пользователь обладает не всеми использованными правами доступа.
После этого сервис nnCron'а останавливается.
Если посмотреть лог, то видно, что сервис крона стартует ещё до загрузки иконок на рабочем столе, что собственно естественно, на то он и сервис. Буквально через секунду загружается кронтаб. Далее начинают стартовать задачи. Если нифига ручками не запускать, то ошибок в логе нет.
Пробую убрать из задачи слово AsLoggedUser. Перезагружаю комп и сразу после загрузки иконок на рабочем столе клацаю ярлычок с запуском задачи - задача отрабатывает нормально! Ошибок нет ни визуальных, ни в логе. Очень странно, на мой взгляд. Ведь задачи в автоматическом режиме запускаются даже с опцией AsLoggedUser,а при ручном зупуске сервис валится с соответствующей ошибкой.
По второму пункту. Если нет ошибки при запуске задач, значит и блокировать клаву и мышку не требуется :D Но всё равно интересно, а вдруг потом пригодится. Жду Ваших мыслей.
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Блокировка клавы и мышки.

Postby makrus » Thu, 11 Sep 2008, 09:42

Halfer
Итак, по первому пункту.
...
После этого сервис nnCron'а останавливается.
Действительно останавливается (т.е. в списке процессов исчезает nncron.exe и ему даже nnguard.exe не помогает) или же он в процессах висит, но ни на что не реагирует?
Перезагружаю комп и сразу после загрузки иконок на рабочем столе клацаю ярлычок с запуском задачи - задача отрабатывает нормально! Ошибок нет ни визуальных, ни в логе. Очень странно, на мой взгляд. Ведь задачи в автоматическом режиме запускаются даже с опцией AsLoggedUser,а при ручном зупуске сервис валится с соответствующей ошибкой.
Да нет, вроде не странно, а вполне объяснимо: когда задача стартует через ярлык - она и так запускается от имени залогинившегося пользователя и ей не нужен AsLoggedUser, а вот когда же ее запускает nnCron, то для некоторых задач (для которых недостаточно прав "System") надо вводить эту опцию..., когда же задача получает права и от опции и от ярлыка, то в итого от такого "скрещивания" прав, результирующие права не нравится системе которая и затыкает nnCron.
Если не сложно попробуй к задачам которые запускают пользователи через ярлык добавить помимо AsLoggedUser, еще и опцию LoadProfile - поможет? Если нет, тогда могу предложить только убрать из этих задач опции авторизации.
Но, я так понимаю, аналогичные задачи, так же запускаемые через ярлык на других машина нормально отрабатывают и ничего не ломается? Было бы очень полезно узнать от каких настроек винды это зависет :roll:
По второму пункту. ... Но всё равно интересно, а вдруг потом пригодится.
Конкретно по блокировке ничего не добавлю нового, но в контексте п.1 есть еще одна идея...
Проблема в том что пользователи слишком быстро запускают ярлыки задач. Надо что бы они не могли этог сделать некоторое время. Значит надо убрать ярлыки с рабочего стола! :idea: При старте (до залогинивания) nnCron удаляет ярлыки задач с рабочего стола пользователя, после залогинивания выполняет необходимые задачи и убедившись что все они нормально отработали копирует ярлыки на рабочий стол. Для успокоения пользователей можно вывесить окошко, что-то навроде: "Отсутствующие на рабочем столе, но необходимые вам ярлыки, появится через 3 минуты" в большинстве случаев это поможет сократить количество звонков в первые дни после введения этого новшества :lol:
все познается в сравнении
makrus
 
Posts: 336
Joined: Mon, 12 Jul 2004, 14:46
Location: Волгоград

Re: Блокировка клавы и мышки.

Postby AlikasS » Thu, 11 Sep 2008, 15:44

Code: Select all
nnCron.exe -run "имя задачи"
вот здесь nncron.exe запускаеться как приложение,
а в хелпе в описании AsLoggedUser есть:
Эту опцию следует использовать только если nnCron
стартовал в качестве сервиса (от имени пользователя System).
Не используйте AsLoggedUser, если вы запускаете nnCron не сервисом, а обычным приложением
User avatar
AlikasS
 
Posts: 1437
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Блокировка клавы и мышки.

Postby Halfer » Fri, 12 Sep 2008, 02:37

AlikasS wrote:
Code: Select all
nnCron.exe -run "имя задачи"
вот здесь nncron.exe запускаеться как приложение,
а в хелпе в описании AsLoggedUser есть:
Эту опцию следует использовать только если nnCron
стартовал в качестве сервиса (от имени пользователя System).
Не используйте AsLoggedUser, если вы запускаете nnCron не сервисом, а обычным приложением

Спасибо за информацию. Я када читал хелп, осмыслил только небольшую его часть. Теперь есть небольшой опыт и знания, но перечитывать хелп более вдумчиво обламывает. Помимо nnCron'а у меня ещё несколько тысяч страниц технической и программной документации, которую иногда приходится перечитывать :Hangman: Спасибо форму за то что он есть и тут всегда можно что-то обсудить предметно :D
Halfer
 
Posts: 395
Joined: Wed, 09 May 2007, 13:23

Re: Блокировка клавы и мышки.

Postby SeMa » Wed, 06 Apr 2011, 15:59

Какая есть возможность блокировки/разблокировки по горячей клавише?
Пробовал
Code: Select all
#( block_Input
WINAPI: BlockInput USER32.DLL
: BlockTheInput TRUE BlockInput DROP ;
: UnblockTheInput FALSE BlockInput DROP ;
0 VALUE lock_input
SingleInstance
WatchHotKey: "^l"
Action:
lock_input 0=
IF
   BlockTheInput
\   1000 PAUSE
   TRUE TO lock_input
ELSE
   UnblockTheInput
   FALSE TO lock_input
THEN
)#

Не работает блокировка. Если раскомментровать паузу, блокировка работает на время паузы.
Пробовал оставить в Action: только
Code: Select all
BlockTheInput
1000 PAUSE

То же :(

nncron.exe v 1.91 Build 1083 21.03.2006
tm.exe v 1.91 Build 499 21.03.2006
Windows XP (5.1.2600) SP3
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest