Выполнение задачи при отсутствии движения мышкой

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

Выполнение задачи при отсутствии движения мышкой

Postby Rumbler » Tue, 11 Jun 2013, 15:29

Помогите реализовать относительно простенькую задачу.
Раньше с nncron не работал, сам пытался 2 дня сделать - все время вылетали ошибки :Hangman:
Нужно каждую минуту проверять компьютер (Windows 7 32bit) на движения мышки и нажатие клавиш (скорее всего использовать нужно IDLE:). Если мышку двигают и/или набирают на клавиатуре текст, ничего делать не надо. Если мышка/клавиатура не активна - нужно ждать 10 минут, если все 10 минут мышка/клавиатура остается не активной, то нужно запустить скрытый процесс из папки C:\Program Files\1\ с названием 1.exe. Этот процесс должен работать только когда мышка/клавиатура не активна. Если мышку подвинули - необходимо в ту же секунду убить процесс, и начинать все с начала - опять каждую минуту проверять компьютер на движения мышки и нажатие клавиш.
Буду благодарен откликнувшимся, заранее спасибо :roll:
Rumbler
 
Posts: 2
Joined: Tue, 11 Jun 2013, 13:44

Re: Выполнение задачи при отсутствии движения мышкой

Postby 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"
)#
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Выполнение задачи при отсутствии движения мышкой

Postby POM80 » Tue, 11 Jun 2013, 20:21

Получается что вы используете эту задачу только для того чтобы не видеть иконки utorrent в трее и освободить память.

PS С версии 3.2.2 в настройках есть галка "Only transfer when system is idle", вполне корректно и быстро отрабатывает (при активности юзера мгновенно все ставит на паузу, а при неактивности через 10 сек продолжает работать).
User avatar
POM80
 
Posts: 12
Joined: Sun, 09 Jun 2013, 14:32

Re: Выполнение задачи при отсутствии движения мышкой

Postby POM80 » Tue, 11 Jun 2013, 21:31

Rumbler wrote:Помогите реализовать относительно простенькую задачу.
Нужно каждую минуту проверять компьютер (Windows 7 32bit) на движения мышки и нажатие клавиш (скорее всего использовать нужно IDLE:). Если мышку двигают и/или набирают на клавиатуре текст, ничего делать не надо. Если мышка/клавиатура не активна - нужно ждать 10 минут, если все 10 минут мышка/клавиатура остается не активной, то нужно запустить скрытый процесс из папки C:\Program Files\1\ с названием 1.exe. Этот процесс должен работать только когда мышка/клавиатура не активна. Если мышку подвинули - необходимо в ту же секунду убить процесс, и начинать все с начала - опять каждую минуту проверять компьютер на движения мышки и нажатие клавиш.
Буду благодарен откликнувшимся, заранее спасибо :roll:


Я не гуру в Форте и кроне но 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 циклов в сек, на современных процах нагрузка незаметна, зато срабатывает быстрее.
User avatar
POM80
 
Posts: 12
Joined: Sun, 09 Jun 2013, 14:32

Re: Выполнение задачи при отсутствии движения мышкой

Postby 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
)#
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Выполнение задачи при отсутствии движения мышкой

Postby POM80 » Tue, 11 Jun 2013, 22:26

Понятно, вам важно не потерять фокус окна.

PS А что дают три ? после ONLINE, ведь в документации просто ONLINE? или я чего-то не понимаю... :(
User avatar
POM80
 
Posts: 12
Joined: Sun, 09 Jun 2013, 14:32

Re: Выполнение задачи при отсутствии движения мышкой

Postby 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

Re: Выполнение задачи при отсутствии движения мышкой

Postby Rumbler » Wed, 12 Jun 2013, 12:14

Всем отписавшимся спасибо, все заработало :wink:
Rumbler
 
Posts: 2
Joined: Tue, 11 Jun 2013, 13:44

Re: Выполнение задачи при отсутствии движения мышкой

Postby 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
;
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Выполнение задачи при отсутствии движения мышкой

Postby POM80 » Wed, 12 Jun 2013, 23:03

О, кстати, надо себе тоже так сделать. :)
Проверка онлайна пингом действительно надежней встроенной проверки на наличие соединения (бывало как-то давно - значек есть, а траффик не идет, соединение "висит"). :wink:

PS В свое время в FIDO много полезного узнал про крон, но нет предела совершенству. :prayer:
User avatar
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 2 guests