Родительский контроль

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

Родительский контроль

Postby AlikasS » Thu, 30 Apr 2009, 17:23

контроль за временем проводимых за играми/или не играми ежедневно
Code: Select all
<%
: (?READ-BY-LINE) { xt \ Lf Lc fEND -- }  ( a u xt -- )
    -1 TO fEND
    10240   \ максимальная длина строки (в символах)
    ALLOCATE THROW TO Lc
    R/O OPEN-FILE-SHARED THROW TO Lf
    BEGIN Lc 10238 Lf READ-LINE THROW
    fEND AND WHILE  \ Выход по команде   
    Lc + 0 SWAP C!
    Lc ASCIIZ> xt EXECUTE TO fEND
    REPEAT  DROP
    Lf CLOSE-FILE DROP
\    Lf FREE DROP
    Lc FREE DROP ;
: (READ-BY-LINE) { xt \ Lf Lc fEND -- }  ( a u xt -- )
    10240   \ максимальная длина строки (в символах)
    ALLOCATE THROW TO Lc
    R/O OPEN-FILE-SHARED THROW TO Lf
    BEGIN Lc 10238 Lf READ-LINE THROW WHILE
    Lc + 0 SWAP C!
    Lc ASCIIZ> xt EXECUTE \ TO fEND
    REPEAT  DROP
    Lf CLOSE-FILE DROP
\    Lf FREE DROP
    Lc FREE DROP ;
: READ-BY-LINE \ compile: ( -- )
            \  execute: ( a u --)
    POSTPONE [NONAME
; IMMEDIATE
: ;READ-BY-LINE
    POSTPONE NONAME]
    POSTPONE (READ-BY-LINE)
; IMMEDIATE
: ;?READ-BY-LINE  ( ? -- )  \ 0 (FALSE) - выход из цикла, все остальные значения считаются правдой и цикл продолжится
    POSTPONE NONAME]
    POSTPONE (?READ-BY-LINE)
; IMMEDIATE
: READ-BY-LINE: eval-string,  POSTPONE READ-BY-LINE ; IMMEDIATE
%>
#( CLASSIC-TASK-#-kilblackgameexe
SingleInstance
\ AsLoggedUser
NoLog
: task-body-kilblackgameexe
   S" C:\Program Files\nnCron\doc\blackgameexe.txt" 2DUP
   EXIST?
   IF
      READ-BY-LINE
      2DUP PROC-EXIST? IF KILL ELSE 2DROP THEN
      ;READ-BY-LINE
   ELSE
   2DROP
   THEN
;
 NoActive
Action:
['] task-body-kilblackgameexe CATCH ?DUP IF ." Error with kilblackgemeexe" . CR THEN
)#
#( CLASSIC-TASK-#-править_время
\ NoActive
SingleInstance
AsLoggedUser
\ LoadProfile
NoLog
WatchHotKey: "^+@V"
Action: { \ a u -- }
\ S" F:\" EXIST? IF ELSE EXIT THEN
WIN-INPUT-TEXT: "Корректировка времени" "введите имя пользователя" "%USERNAME%" 30 DUP 0=
IF DROP
TO u
TO a
   S" C:\Program Files\nnCron\var\timesforgames-" a u S+ EXIST?
   IF
   S" Разрешенное время" S" пользователь - " a u S+ S"  (уже выработано - " S+ S" C:\Program Files\nnCron\doc\logwork\%YYYY%\%MMM%\%DD%\time.count.games." EVAL-SUBST a u S+  FILE S+ S"  мин.)" S+  S" C:\Program Files\nnCron\var\timesforgames-" a u S+ FILE 0 WIN-INPUT-TEXT 0=
      IF
      S" C:\Program Files\nnCron\var\timesforgames-" a u S+ FWRITE
      THEN
   ELSE TMSG: "Такой пользователь не зарегистрирован" 5
   THEN
ELSE
    2 =
    IF
\ RECURSIVE
\ CLASSIC-TASK-#-править_время LAUNCH EXIT
    THEN

THEN
)#
#( CLASSIC-TASK-#-min_count.games
\ NoActive
HyperActive
AsLoggedUser
VARIABLE minutes_workgames
VARIABLE minutes_to_endgames
VARIABLE chastoendgames
VARIABLE mintoendgames
VARIABLE chasworkgames
VARIABLE minworkgames
SingleInstance
: inicialnewusergame
FILE-EXIST: "C:\Program Files\nnCron\var\timesforgames-%USERNAME%"
IF
ELSE
FILE-WRITE: "C:\Program Files\nnCron\var\timesforgames-%USERNAME%" "120" \ инициализируем ограничение времени, сейчас 2 часа :-)
THEN

FILE-EXIST: "C:\Program Files\nnCron\doc\logwork\%YYYY%\%MMM%\%DD%\time.count.games.%USERNAME%"
IF
ELSE
FILE-WRITE: "C:\Program Files\nnCron\doc\logwork\%YYYY%\%MMM%\%DD%\time.count.games.%USERNAME%" "0" \ инициализируем счетчик времени
THEN
;

: controltimegame
PAD 100 S" C:\Program Files\nnCron\doc\logwork\%YYYY%\%MMM%\%DD%\time.count.games.%USERNAME%"  \ считываем содержание файла
EVAL-SUBST FREAD S>NUM minutes_workgames ! \ записываем в переменную
   minutes_workgames @ 1 + minutes_workgames ! \ minutes_workgames 1+!
   PAD 100 S" C:\Program Files\nnCron\var\timesforgames-%USERNAME%"    EVAL-SUBST FREAD S>NUM minutes_workgames @ - minutes_to_endgames !
   minutes_workgames @ 60 /MOD chasworkgames ! minworkgames !
   FILE-WRITE: "C:\Program Files\nnCron\doc\time.today.work.games" "%chasworkgames @% : %minworkgames @%"

   minutes_to_endgames @ 60 /MOD chastoendgames ! mintoendgames !
   FILE-WRITE: "C:\Program Files\nnCron\doc\time.to.end.games" "%chastoendgames @% : %mintoendgames @%" \ часов и минут до окончания времени
   \ FILE-WRITE: "C:\Program Files\nnCron\doc\time.to.end.games" "%minutes_to_endgames @%" \ минут до окончания времени
   FILE-WRITE: "C:\Program Files\nnCron\doc\logwork\%YYYY%\%MMM%\%DD%\time.count.games.%USERNAME%" "%minutes_workgames @%"

minutes_workgames @ PAD 100 S" C:\Program Files\nnCron\var\timesforgames-%USERNAME%" EVAL-SUBST FREAD S>NUM 3 - >
   IF
   1000 1000 BEEP
   1000 100 BEEP
\   S" очень долго включены игры" SPKTEXT
   1000 1000 BEEP
   1000 100 BEEP
   THEN

minutes_workgames @ PAD 100 S" C:\Program Files\nnCron\var\timesforgames-%USERNAME%" EVAL-SUBST FREAD S>NUM >
   IF

3000 PAUSE
CLASSIC-TASK-#-kilblackgameexe LAUNCH
   THEN
;

: bodicontrolgame
inicialnewusergame
   S" C:\Program Files\nnCron\doc\blackgameexe.txt" 2DUP
   EXIST?
   IF
      READ-BY-LINE
      PROC-EXIST?
      IF
      controltimegame
      THEN
      ;READ-BY-LINE
   ELSE
   2DROP
   THEN
;

NoLog
\ Time: * * * * * *
\ Rule: PROC-EXIST: "czero.exe"
\ Rule: PROC-EXIST: "gta3.exe"
\ Rule: PROC-EXIST: "gta-vc.exe"
\ Rule: PROC-EXIST: "hl.exe"
\ Rule: PROC-EXIST: "speed.exe"
\ Rule: PROC-EXIST: "UnrealTournament.exe"
\ Rule: PROC-EXIST: "START.EXE"
\ Rule: PROC-EXIST: "Zuma.exe"
\ Rule: PROC-EXIST: "OzzyBubbles.exe"
\ Rule: PROC-EXIST: "nfsc.exe"
\ Rule: PROC-EXIST: "Heroes3.exe"
Action:
\ ?наработе IF EXIT THEN
['] bodicontrolgame  CATCH ?DUP IF ." Error with controltimegame" . CR THEN
)#
в файле C:\Program Files\nnCron\doc\blackgameexe.txt
список типа
zero.exe
gta3.exe
czero.exe
hl.exe
ButterflyEscape.exe
speed.exe
UnrealTournament.exe
C:\Games\Червяки2\START.EXE
C:\Games\SPORE\Sporebin\SporeApp.exe
Zuma.exe
OzzyBubbles.exe
nfsc.exe
gta-vc.exe
Heroes3.exe
M29.exe
moh_spearhead.exe
MOHAA.exe
LEGO Island 2.exe
srs.exe
LEGOIndy.exe
RigNRoll.exe
P.S. писалось давно, так что про оптимальность прошу не говорить, но работает
по Ctrl+Alt+Shift+V - вызов корректировки допущенного времени в минутах/день
по просьбе сына "бипер" обозначается за 3 минуты, что бы успел сохранить игру
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 3 guests

cron