Обсуждение программ nnCron и nnCron LITE
by Rumbler » Tue, 11 Jun 2013, 15:29
Помогите реализовать относительно простенькую задачу. Раньше с nncron не работал, сам пытался 2 дня сделать - все время вылетали ошибки Нужно каждую минуту проверять компьютер (Windows 7 32bit) на движения мышки и нажатие клавиш (скорее всего использовать нужно IDLE:). Если мышку двигают и/или набирают на клавиатуре текст, ничего делать не надо. Если мышка/клавиатура не активна - нужно ждать 10 минут, если все 10 минут мышка/клавиатура остается не активной, то нужно запустить скрытый процесс из папки C:\Program Files\1\ с названием 1.exe. Этот процесс должен работать только когда мышка/клавиатура не активна. Если мышку подвинули - необходимо в ту же секунду убить процесс, и начинать все с начала - опять каждую минуту проверять компьютер на движения мышки и нажатие клавиш. Буду благодарен откликнувшимся, заранее спасибо 
-
Rumbler
-
- Posts: 2
- Joined: Tue, 11 Jun 2013, 13:44
by Morituruz » Tue, 11 Jun 2013, 20:08
У меня utorrent примерно таким образом работает, см. комментарии в коде: - Code: Select all
#( CLASSIC-TASK-#-idle_torrent \ 15:30 21.04.2012 SingleInstance NoLog AsLoggedUser \ меняем 300 секунд на свой интервал: Rule: IDLE: 300 ; Action: SWHide ShowNoActivate \ ставим здесь запуск нужной программы: StartIn: "c:\Program Files (x86)\" START-APP: c:\Program Files (x86)\uTorrent\uTorrent.exe /MINIMIZED BEGIN \ в этом цикле каждые 5 секунд проверяется неактивность пользователя, если он был активен в последние 5 секунд, из цикла выходим: 5000 PAUSE 5 IDLE NOT UNTIL \ цикл завершился, убиваем процесс: PROC-CLOSE: "utorrent.exe" )#
-

Morituruz
-
- Posts: 728
- Joined: Sun, 14 Oct 2007, 01:51
by POM80 » Tue, 11 Jun 2013, 20:21
Получается что вы используете эту задачу только для того чтобы не видеть иконки utorrent в трее и освободить память.
PS С версии 3.2.2 в настройках есть галка "Only transfer when system is idle", вполне корректно и быстро отрабатывает (при активности юзера мгновенно все ставит на паузу, а при неактивности через 10 сек продолжает работать).
-

POM80
-
- Posts: 12
- Joined: Sun, 09 Jun 2013, 14:32
by POM80 » Tue, 11 Jun 2013, 21:31
Rumbler wrote:Помогите реализовать относительно простенькую задачу. Нужно каждую минуту проверять компьютер (Windows 7 32bit) на движения мышки и нажатие клавиш (скорее всего использовать нужно IDLE:). Если мышку двигают и/или набирают на клавиатуре текст, ничего делать не надо. Если мышка/клавиатура не активна - нужно ждать 10 минут, если все 10 минут мышка/клавиатура остается не активной, то нужно запустить скрытый процесс из папки C:\Program Files\1\ с названием 1.exe. Этот процесс должен работать только когда мышка/клавиатура не активна. Если мышку подвинули - необходимо в ту же секунду убить процесс, и начинать все с начала - опять каждую минуту проверять компьютер на движения мышки и нажатие клавиш. Буду благодарен откликнувшимся, заранее спасибо 
Я не гуру в Форте и кроне но IDLE использую для отключения монитора с проверкой отсутствия определенных процессов. А в вашем случае будет что-то вроде этого: - Code: Select all
#( CLASSIC-TASK-#-Start_1.exe AsLoggedUser / Условие запуска задачи - простой более 10 мин и отсутствие процесса 1.exe Rule: IDLE: 600 PROC-EXIST: "1.exe" NOT AND Action: / Запуск 1.exe со скрытым окном SWHide StartIn: "C:\Program Files\1" START-APP: 1.exe / Отслеживание активности с интервалом 0,1 сек, в случае активности более 1 сек прибиваем 1.exe BEGIN 100 PAUSE 1 IDLE NOT UNTIL KILL: "1.exe" )#
Процесс 1.exe прибивается в течении 1-2 сек (зависит скорее от прожорливости процесса). Еще не забыть в начале кронтаба добавить: - Code: Select all
<% InitIdleHook %>
PS Думаю не стоит пугаться 10 циклов в сек, на современных процах нагрузка незаметна, зато срабатывает быстрее.
-

POM80
-
- Posts: 12
- Joined: Sun, 09 Jun 2013, 14:32
by Morituruz » Tue, 11 Jun 2013, 21:52
POM80 wrote:Получается что вы используете эту задачу только для того чтобы не видеть иконки utorrent в трее и освободить память.
Не совсем, вот текст без купюр: - Code: Select all
#( CLASSIC-TASK-#-idle_torrent \ 15:30 21.04.2012 SingleInstance NoLog AsLoggedUser VARIABLE idle_torrent_foreground_window Rule: IDLE: 300 PROC-EXIST: "uTorrent.exe" NOT AND ONLINE??? AND ; Action: \ кладём на стек строку с handle окна на переднем плане: GetForegroundWindow idle_torrent_foreground_window ! S" idle utorrent" CRON-LOG SWHide ShowNoActivate StartIn: "c:\Program Files (x86)\" START-APP: c:\Program Files (x86)\uTorrent\uTorrent.exe /MINIMIZED 6000 PAUSE \ активизируем окно, которое было на переднем плане: idle_torrent_foreground_window @ N>S WIN-ACTIVATE BEGIN 5000 PAUSE 5 IDLE NOT UNTIL PROC-CLOSE: "utorrent.exe" \ активизируем окно, которое было на переднем плане: idle_torrent_foreground_window @ N>S WIN-ACTIVATE )#
-

Morituruz
-
- Posts: 728
- Joined: Sun, 14 Oct 2007, 01:51
by POM80 » Tue, 11 Jun 2013, 22:26
Понятно, вам важно не потерять фокус окна. PS А что дают три ? после ONLINE, ведь в документации просто ONLINE? или я чего-то не понимаю... 
-

POM80
-
- Posts: 12
- Joined: Sun, 09 Jun 2013, 14:32
by Aveiro » Wed, 12 Jun 2013, 10:43
- Code: Select all
######################################################## <% InitIdleHook %> #( ACTIVITY_USER \ TASK: работа в зависимости от активности пользователя SingleInstance Action: BEGIN \ ПРОПАЛА АКТИВНОСТЬ пользователя в течении 600 секунд -> GetIdleTime 600000 > IF PROC-EXIST: "1.exe" NOT IF \ запуск 1.exe -> START-APP: C:\Program Files\1\1.exe THEN \ цикл пока не появится активность пользователя BEGIN GetIdleTime 2000 > WHILE PAUSE: 1000 REPEAT \ ПОЯВИЛАСЬ АКТИВНОСТЬ пользователя -> PROC-EXIST: "1.exe" IF \ -> закрытие 1.exe KILL: "1.exe" THEN THEN \ периодичность цикла проверки PAUSE: 5000 AGAIN )# ######################################################
nncron.exe v 1.93b15 Build 1177 08.02.2016 tm.exe v 1.93b15 Build 604 08.02.2016
-
Aveiro
-
- Posts: 222
- Joined: Tue, 06 Jul 2010, 21:19
by Rumbler » Wed, 12 Jun 2013, 12:14
Всем отписавшимся спасибо, все заработало 
-
Rumbler
-
- Posts: 2
- Joined: Tue, 11 Jun 2013, 13:44
by Morituruz » Wed, 12 Jun 2013, 16:15
POM80 wrote:PS А что дают три ? после ONLINE, ведь в документации просто ONLINE? или я чего-то не понимаю... 
В форте, если слова по-разному написаны, то это на самом деле разные слова  - Code: Select all
: ONLINE??? S" yandex.ru" 1 PING S" google.com" 1 PING OR ;
-

Morituruz
-
- Posts: 728
- Joined: Sun, 14 Oct 2007, 01:51
by POM80 » Wed, 12 Jun 2013, 23:03
О, кстати, надо себе тоже так сделать.  Проверка онлайна пингом действительно надежней встроенной проверки на наличие соединения (бывало как-то давно - значек есть, а траффик не идет, соединение "висит").  PS В свое время в FIDO много полезного узнал про крон, но нет предела совершенству. 
-

POM80
-
- Posts: 12
- Joined: Sun, 09 Jun 2013, 14:32
Return to nnCron forum (Russian)
Who is online
Users browsing this forum: No registered users and 1 guest
|
|