Обсуждение программ nnCron и nnCron LITE
by VoidVolker » Wed, 24 Oct 2012, 20:48
Опять те-же самые ошибки: - Code: Select all
S" %WATCH-PROC-ID PROC-NAME%" EVAL-SUBST =- Code: Select all
WATCH-PROC-ID PROC-NAME
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by ask » Fri, 26 Oct 2012, 11:30
Это не ошибка, а просто неэффективный код. Исправить легко, просто я делюсь тем, что писал давным-давно. Следующий скрипт поправил  Итак, запуск всех процессов отслеживается. Не менее интересно отслеживать и останов процессов. Не секрет, что после завершения многих задач остаётся куча мусорных файлов, которые не грех и "почикать". А при завешении некоторых "сложно-составных" приложений (например, VMware) имеет смысл остановить некоторые службы. Вот раздел файла, содержащего описания, что делать при остановке каждого указанного процесса: - Code: Select all
[ProcessStop] Count=29 Log=
[ProcessStop_1] Name=rko_client.exe FileCount=4
[ProcessStop_1_1] DirType=TEMP FileTempl=*.frf Recursive=No WithDir=No
[ProcessStop_1_2] DirType=TEMP FileTempl=*.fr3 Recursive=No WithDir=No
[ProcessStop_1_3] DirType=TEMP FileTempl=*.pas Recursive=No WithDir=No
[ProcessStop_1_4] DirType=TEMP FileTempl=*.tmp Recursive=No WithDir=No
[ProcessStop_2] Name=asp_srv.exe FileCount=4
[ProcessStop_2_1] DirType=TEMP FileTempl=*.idx Recursive=No WithDir=No
[ProcessStop_2_2] DirType=TEMP FileTempl=*.lst Recursive=No WithDir=No
[ProcessStop_2_3] DirType=TEMP FileTempl=*.tmp Recursive=No WithDir=No
[ProcessStop_2_4] DirType=TEMP FileTempl=*.cvr Recursive=No WithDir=No
[ProcessStop_3] Name=xnview.exe FileCount=2
[ProcessStop_3_1] DirType=TEMP FileTempl=category.* Recursive=No WithDir=No
[ProcessStop_3_2] DirType=TEMP FileTempl=XnView.db Recursive=No WithDir=No
[ProcessStop_4] Name=UltraISO.exe FileCount=1
[ProcessStop_4_1] DirType=TEMP FileTempl=Ultra$ISO Recursive=Yes WithDir=Yes
[ProcessStop_5] Name=ci.exe FileCount=3
[ProcessStop_5_1] DirType=TEMP FileTempl=gentee* Recursive=Yes WithDir=Yes
[ProcessStop_5_2] DirType=TEMP FileTempl=gentee*.* Recursive=No WithDir=No
[ProcessStop_5_3] DirType=RealDir RealDir=C:\MY_DISTRIB FileTempl=*.log WithDir=Yes Recursive=Yes
[ProcessStop_6] Name=cicmd.exe FileCount=3
[ProcessStop_6_1] DirType=TEMP FileTempl=gentee* Recursive=Yes WithDir=Yes
[ProcessStop_6_2] DirType=TEMP FileTempl=gentee*.* Recursive=No WithDir=No
[ProcessStop_6_3] DirType=RealDir FileTempl=*.log WithDir=No Recursive=Yes RealDir=C:\MY_DISTRIB
[ProcessStop_7] Name=bsplayer.exe FileCount=1
[ProcessStop_7_1] DirType=TEMP FileTempl=FTMP*.0E0 Recursive=Yes WithDir=Yes
[ProcessStop_8] Name=Opera.exe FileCount=22
[ProcessStop_8_1] DirType=TEMP FileTempl=CACHEDIR.TAG Recursive=No WithDir=No
[ProcessStop_8_2] DirType=TEMP FileTempl=activity.opr Recursive=No WithDir=No
[ProcessStop_8_3] DirType=TEMP FileTempl=dcache4.url Recursive=No WithDir=No
[ProcessStop_8_4] DirType=TEMP FileTempl=WPDNSE Recursive=Yes WithDir=Yes
[ProcessStop_8_5] DirType=TEMP FileTempl=sesn Recursive=Yes WithDir=Yes
[ProcessStop_8_6] DirType=TEMP FileTempl=revocation Recursive=Yes WithDir=Yes
[ProcessStop_8_7] DirType=TEMP FileTempl=turbo Recursive=Yes WithDir=Yes
[ProcessStop_8_8] DirType=TEMP FileTempl=g_* Recursive=Yes WithDir=Yes
[ProcessStop_8_9] DirType=TEMP FileTempl=override_downloaded.ini Recursive=No WithDir=No
[ProcessStop_8_10] DirType=TEMP FileTempl=MemCrash*.bin Recursive=No WithDir=No
[ProcessStop_8_11] DirType=TEMP FileTempl=msohtmlclip* Recursive=Yes WithDir=Yes
[ProcessStop_8_12] DirType=TEMP FileTempl=assoc* Recursive=Yes WithDir=Yes
[ProcessStop_8_13] DirType=TEMP FileTempl=*.pdf Recursive=No WithDir=No
[ProcessStop_8_14] DirType=TEMP FileTempl=*.doc Recursive=No WithDir=No
[ProcessStop_8_15] DirType=TEMP FileTempl=*.rtf Recursive=No WithDir=No
[ProcessStop_8_16] DirType=TEMP FileTempl=*.xls Recursive=No WithDir=No
[ProcessStop_8_16] DirType=TEMP FileTempl=*.jpg Recursive=No WithDir=No
[ProcessStop_8_17] DirType=TEMP FileTempl=assoc* Recursive=Yes WithDir=Yes
[ProcessStop_8_18] DirType=TEMP FileTempl=*.fxv2* Recursive=No WithDir=No
[ProcessStop_8_19] DirType=TEMP FileTempl=Adobe Recursive=Yes WithDir=Yes
[ProcessStop_8_20] DirType=TEMP FileTempl=opera-* Recursive=Yes WithDir=Yes
[ProcessStop_8_21] DirType=TEMP FileTempl=cookies4.dat Recursive=No WithDir=No
[ProcessStop_8_22] DirType=RealDir RealDir=%USR_LOCAL_APPDATA%\Opera\Opera\vps FileTempl=*.* Recursive=Yes WithDir=Yes
[ProcessStop_9] Name=thebat.exe FileCount=1
[ProcessStop_9_1] DirType=TEMP FileTempl=bat*.tmp Recursive=No WithDir=No
[ProcessStop_10] Name=EXCEL.EXE FileCount=3
[ProcessStop_10_1] DirType=TEMP FileTempl=Excel* Recursive=Yes WithDir=Yes
[ProcessStop_10_2] DirType=TEMP FileTempl=VBE Recursive=Yes WithDir=Yes
[ProcessStop_10_3] DirType=TEMP FileTempl=msohtml* Recursive=Yes WithDir=Yes
[ProcessStop_11] Name=WinRAR.exe FileCount=2
[ProcessStop_11_1] DirType=TEMP FileTempl=Rar$*.* Recursive=No WithDir=No
[ProcessStop_11_2] DirType=TEMP FileTempl=Rar$*.* Recursive=Yes WithDir=Yes
[ProcessStop_12] Name=Rar.exe FileCount=3
[ProcessStop_12_1] DirType=TEMP FileTempl=Rar$*.* Recursive=No WithDir=No
[ProcessStop_12_2] DirType=TEMP FileTempl=Rar$*.* Recursive=Yes WithDir=Yes
[ProcessStop_12_3] DirType=TEMP FileTempl=__rar_*.* Recursive=No WithDir=No
[ProcessStop_13] Name=iexplore.exe FileCount=5
[ProcessStop_13_1] DirType=TEMP FileTempl=*.tmp Recursive=No WithDir=No
[ProcessStop_13_2] DirType=TEMP FileTempl=java_install_reg.log Recursive=No WithDir=No
[ProcessStop_13_3] DirType=TEMP FileTempl=hs_err_pid3800.log Recursive=No WithDir=No
[ProcessStop_13_4] DirType=TEMP FileTempl=hsperfdata_*.* Recursive=Yes WithDir=Yes
[ProcessStop_13_5] DirType=RealDir RealDir=%TEMP%\TMP\Content.IE5 FileTempl=*.* Recursive=Yes WithDir=Yes
[ProcessStop_14] Name=FRONTPG.EXE FileCount=4
[ProcessStop_14_1] DirType=TEMP FileTempl=FrontPageTempDir Recursive=Yes WithDir=Yes
[ProcessStop_14_2] DirType=TEMP FileTempl=FRONTPG.log Recursive=No WithDir=No
[ProcessStop_14_3] DirType=TEMP FileTempl=FRONTPG.log Recursive=No WithDir=No
[ProcessStop_14_4] DirType=TEMP FileTempl=wecerr.txt Recursive=No WithDir=No
[ProcessStop_15] Name=vmware.exe FileCount=9 KillProcessCount=2 StopServiceCount=6
[ProcessStop_15_1] DirType=TEMP FileTempl=net_config_workstation.tmp Recursive=No WithDir=No
[ProcessStop_15_2] DirType=TEMP FileTempl=vminst.log Recursive=No WithDir=No
[ProcessStop_15_3] DirType=TEMP FileTempl=vmware-vmount*.log Recursive=No WithDir=No
[ProcessStop_15_4] DirType=TEMP FileTempl=vminst.log Recursive=No WithDir=No
[ProcessStop_15_5] DirType=TEMP FileTempl=vmware-* Recursive=Yes WithDir=Yes Pause=5000
[ProcessStop_15_6] DirType=RealDir RealDir=G:\VMware\VMS\Windows 7 Ultimate\caches FileTempl=*.* WithDir=Yes Recursive=Yes
[ProcessStop_15_7] DirType=RealDir RealDir=G:\VMware\VMS\Windows 7 x64\caches FileTempl=*.* WithDir=Yes Recursive=Yes
[ProcessStop_15_8] DirType=RealDir RealDir=G:\VMware\VMS\Windows XP Professional\caches FileTempl=*.* WithDir=Yes Recursive=Yes
[ProcessStop_15_9] DirType=RealDir RealDir=G:\VMware\VMS\work\caches FileTempl=*.* WithDir=Yes Recursive=Yes
[StopService_15_1] ProcessName=vmware-hostd.exe ServiceName=VMware Workstation Server
[StopService_15_2] ProcessName=vmount2.exe ServiceName=VMware Virtual Mount Manager Extended
[StopService_15_3] ProcessName=vmnat.exe ServiceName=VMware NAT Service
[StopService_15_4] ProcessName=vmnetdhcp.exe ServiceName=VMware DHCP Service
[StopService_15_5] ProcessName=vmware-usbarbitrator.exe ServiceName=VMware USB Arbitration Service
[StopService_15_6] ProcessName=vmware-authd.exe ServiceName=VMware Authorization Service
[KillProcess_15_1] ProcessName=vmware-tray.exe
[KillProcess_15_2] ProcessName=hqtray.exe
[ProcessStop_16] Name=vmware-hostd.exe FileCount=4
[ProcessStop_16_1] DirType=TEMP FileTempl=net_config_workstation.tmp Recursive=No WithDir=No
[ProcessStop_16_2] DirType=TEMP FileTempl=vminst.log Recursive=No WithDir=No
[ProcessStop_16_3] DirType=TEMP FileTempl=vmware-vmount*.log Recursive=No WithDir=No
[ProcessStop_16_4] DirType=TEMP FileTempl=vmware-* Recursive=Yes WithDir=Yes
[ProcessStop_17] Name=WINWORD.EXE FileCount=7
[ProcessStop_17_1] DirType=TEMP FileTempl=msohtmlclip* Recursive=Yes WithDir=Yes
[ProcessStop_17_2] DirType=TEMP FileTempl=msohtml* Recursive=Yes WithDir=Yes
[ProcessStop_17_3] DirType=TEMP FileTempl=VBE Recursive=Yes WithDir=Yes
[ProcessStop_17_4] DirType=TEMP FileTempl=WPDNSE Recursive=Yes WithDir=Yes
[ProcessStop_17_5] DirType=TEMP FileTempl=*.od Recursive=No WithDir=No
[ProcessStop_17_6] DirType=TEMP FileTempl=LoadedBodyStream*.out Recursive=No WithDir=No
[ProcessStop_17_7] DirType=RealDir RealDir=%USR_INTERNET_CACHE%\Content.Word FileTempl=*.* Recursive=No WithDir=No
[ProcessStop_18] Name=OUTLOOK.EXE KillProcessCount=2 FileCount=4
[KillProcess_18_1] ProcessName=asp_srv.exe
[KillProcess_18_2] ProcessName=OFFLB.EXE
[ProcessStop_18_1] DirType=TEMP FileTempl=ExchangePerflog*.dat Recursive=No WithDir=No
[ProcessStop_18_2] DirType=TEMP FileTempl=Perflib_Perfdata*.dat Recursive=No WithDir=No
[ProcessStop_18_3] DirType=RealDir RealDir=%USR_INTERNET_CACHE%\Content.Outlook FileTempl=*.* Recursive=Yes WithDir=Yes
[ProcessStop_18_4] DirType=TEMP FileTempl=SetupExe*.log Recursive=No WithDir=No
[ProcessStop_19] Name=TrueImage.exe StopServiceCount=2
[StopService_19_1] ProcessName=schedul2.exe ServiceName=Acronis Scheduler2 Service
[ProcessStop_20] Name=PDCmd.exe StopServiceCount=2
[StopService_20_1] ProcessName=PD91Engine.exe ServiceName=PD91Engine
[StopService_20_2] ProcessName=PD91Agent.exe ServiceName=PD91Agent
[ProcessStop_21] Name=PDFTRA~1.EXE KillProcessCount=1 ServiceName=VMware USB Arbitration Service
[KillProcess_21_1] ProcessName=pdfSaver3a.exe
[ProcessStop_22] Name=bcb.exe FileCount=4
[ProcessStop_22_1] DirType=RealDir RealDir=%TEMP%\TEMP FileTempl=vcl*.* Recursive=No WithDir=No
[ProcessStop_22_2] DirType=RealDir RealDir=D:\TEMP FileTempl=vcl*.* Recursive=No WithDir=No
[ProcessStop_22_3] DirType=RealDir RealDir=G:\TEMP FileTempl=vcl*.* Recursive=No WithDir=No
[ProcessStop_22_4] DirType=TEMP FileTempl=QRP*.tmp Recursive=No WithDir=No
[ProcessStop_23] Name=AutoGK.exe FileCount=3
[ProcessStop_23_1] DirType=TEMP FileTempl=agk_tmp Recursive=Yes WithDir=Yes
[ProcessStop_23_2] DirType=TEMP FileTempl=agk.tbl Recursive=No WithDir=No
[ProcessStop_23_3] DirType=TEMP FileTempl=agk.tbl Recursive=No WithDir=No
[ProcessStop_24] Name=offlb.exe FileCount=2
[ProcessStop_24_1] DirType=TEMP FileTempl=WPDNSE Recursive=Yes WithDir=Yes
[ProcessStop_24_1] DirType=TEMP FileTempl=msohtml* Recursive=Yes WithDir=Yes
[ProcessStop_25] Name=Far.exe FileCount=2
[ProcessStop_25_1] DirType=TEMP FileTempl=FTMP*.* Recursive=Yes WithDir=Yes
[ProcessStop_25_2] DirType=TEMP FileTempl=Tree.Far Recursive=No WithDir=No
[ProcessStop_26] Name=WScript.exe FileCount=2
[ProcessStop_26_1] DirType=TEMP FileTempl=VBE Recursive=Yes WithDir=Yes
[ProcessStop_26_2] DirType=TEMP FileTempl=WPDNSE Recursive=Yes WithDir=Yes
[ProcessStop_27] Name=msseces.exe FileCount=1
[ProcessStop_27_1] DirType=TEMP FileTempl=MpCmdRun.log Recursive=No WithDir=No
[ProcessStop_28] Name=TeamViewer.exe FileCount=1
[ProcessStop_28_1] DirType=TEMP FileTempl=TeamViewer Recursive=Yes WithDir=Yes
[ProcessStop_29] Name=Skype.exe FileCount=1 StopServiceCount=1 FileCount=1
[StopService_29_1] ProcessName=Updater.exe ServiceName=Skype Updater
[ProcessStop_29_1] DirType=RealDir RealDir=%USR_INTERNET_CACHE%\Content.IE5 FileTempl=*.* WithDir=Yes Recursive=Yes
А вот обрабатывающий это дело скрипт: - Code: Select all
<% USER-CREATE ARC_NAME 250 USER-ALLOT %>
#( OnAnyProcStop NoLog NoDel HyperActive WatchProcStop: "*"
USER-CREATE PRCN_S 80 USER-ALLOT USER-CREATE PC_COUNT 10 USER-ALLOT \ USER-CREATE PC_SECTION 80 USER-ALLOT USER-CREATE PC_NAME 80 USER-ALLOT USER-CREATE PC_F_COUNT 10 USER-ALLOT USER-CREATE PC_F_DIR_TYPE 80 USER-ALLOT USER-CREATE PC_F_TEMPL 80 USER-ALLOT USER-CREATE PC_F_RECURSIVE 10 USER-ALLOT USER-CREATE PC_F_WITH_DIR 10 USER-ALLOT USER-CREATE PC_F_DIR 10 USER-ALLOT USER-CREATE PC_LOG 10 USER-ALLOT USER-CREATE PC_REAL_DIR 256 USER-ALLOT USER-CREATE PROCESS_INI_NAME 256 USER-ALLOT USER-CREATE PC_ID 10 USER-ALLOT USER-CREATE PC_PRC_NAME 80 USER-ALLOT USER-CREATE PC_SRV_NAME 80 USER-ALLOT
USER B USER PC_I USER PC_F_I
Action: SWHide NormalPriority
FILE-EXIST: "%ASKCRON_INI COUNT%" IF \ Найдём просесс с этим PID среди ранее запущенных процессов S" %TEMP%\Processes.ini" EVAL-SUBST PROCESS_INI_NAME PLACE S" %WATCH-PROC-ID%" EVAL-SUBST PC_ID PLACE
PROCESS_INI_NAME COUNT INI-FILENAME S" Processes" INI-SECTION PC_ID COUNT INI-GET-VALUE PRCN_S PLACE PRCN_S COUNT S" " COMPARE 0= NOT RE-MATCH: "%PRCN_S COUNT%" "%PC_EXCLUDE COUNT%" NOT AND IF \ Удалить этот параметр из "%TEMP%\Processes.ini" PRCN_S COUNT S" default value" COMPARE 0= NOT IF PROCESS_INI_NAME COUNT INI-FILENAME S" Processes" INI-SECTION PC_ID COUNT S" " INI-DEL-VALUE THEN \ Если процесс с таким PID найден в логе запускавшихся процессов и если БОЛЬШЕ НЕТ процессов с таким именем PRCN_S COUNT S" default value" COMPARE 0= NOT PRCN_S COUNT PROC-EXIST? NOT AND IF ASKCRON_INI COUNT INI-FILENAME S" ProcessStop" INI-SECTION S" Count" INI-GET-VALUE PC_COUNT PLACE S" Log" INI-GET-VALUE PC_LOG PLACE PC_COUNT COUNT S" " COMPARE 0= NOT PC_COUNT COUNT S" 0" COMPARE 0= NOT PC_COUNT COUNT S" default value" COMPARE 0= NOT AND AND IF 0 PC_I ! PC_COUNT COUNT S>NUM 0 DO PC_I @ 1 + PC_I ! \ S" ProcessStop_%PC_I @%" EVAL-SUBST PC_SECTION PLACE \ PC_SECTION COUNT INI-SECTION " ProcessStop_%PC_I @ N>S%" INI-SECTION S" Name" INI-GET-VALUE PC_NAME PLACE \ Если имя остановленного процесса найдено в INI-шке (этот вариант - сравнение без учёта регистра букв) RE-MATCH: "%PRCN_S COUNT%" "/%PC_NAME COUNT%/i" IF \ Нарыть кол-во удаляемых файлов S" FileCount" INI-GET-VALUE PC_F_COUNT PLACE PC_F_COUNT COUNT S" " COMPARE 0= NOT PC_F_COUNT COUNT S" 0" COMPARE 0= NOT PC_F_COUNT COUNT S" default value" COMPARE 0= NOT AND AND IF 0 PC_F_I ! PC_F_COUNT COUNT S>NUM 0 DO PC_F_I @ 1 + PC_F_I ! \ S" ProcessStop_%PC_I @%_%PC_F_I @%" EVAL-SUBST PC_SECTION PLACE \ PC_SECTION COUNT INI-SECTION " ProcessStop_%PC_I @ N>S%_%PC_F_I @ N>S%" INI-SECTION S" DirType" INI-GET-VALUE PC_F_DIR_TYPE PLACE S" FileTempl" INI-GET-VALUE PC_F_TEMPL PLACE S" Recursive" INI-GET-VALUE PC_F_RECURSIVE PLACE S" WithDir" INI-GET-VALUE PC_F_WITH_DIR PLACE S" RealDir" INI-GET-VALUE EVAL-SUBST PC_REAL_DIR PLACE \ Определить папку, из которой удаляем мусор PC_F_DIR_TYPE COUNT S" TEMP" COMPARE 0= IF S" %TEMP%" EVAL-SUBST PC_F_DIR PLACE ELSE PC_F_DIR_TYPE COUNT S" ApplicationData" COMPARE 0= IF S" %FOLDER-APP-DATA%" EVAL-SUBST PC_F_DIR PLACE ELSE PC_F_DIR_TYPE COUNT S" RealDir" COMPARE 0= IF S" %PC_REAL_DIR COUNT%" EVAL-SUBST PC_F_DIR PLACE THEN THEN THEN FILE-EXIST: "%PC_F_DIR COUNT%\" IF PC_LOG COUNT S" Yes" COMPARE 0= IF LOG: "%TEMP%\Удаляемые файлы.log" "(%PRCN_S COUNT%) %hh%:%mm%:%ss% %PC_F_DIR COUNT%\%PC_F_TEMPL COUNT%" THEN PC_F_RECURSIVE COUNT S" Yes" COMPARE 0= IF SKIPERRORS FOR-FILES: "%PC_F_DIR COUNT%\%PC_F_TEMPL COUNT%" FILE-EXIST: "%FOUND-FULLPATH%\" IF PC_F_WITH_DIR COUNT S" Yes" COMPARE 0= IF RECURSIVE WITHDIRS SKIPERRORS DIR-DELETE: "%FOUND-FULLPATH%" ELSE RECURSIVE SKIPERRORS FILE-DELETE: "%FOUND-FULLPATH%" THEN THEN ;FOR-FILES ELSE FILE-EXIST: "%PC_F_DIR COUNT%\%PC_F_TEMPL COUNT%" IF FILE-DELETE: "%PC_F_DIR COUNT%\%PC_F_TEMPL COUNT%" THEN THEN THEN LOOP THEN \ Нарыть кол-во останавливаемых сервисов ASKCRON_INI COUNT INI-FILENAME \ S" ProcessStop_%PC_I @%" EVAL-SUBST PC_SECTION PLACE \ PC_SECTION COUNT INI-SECTION " ProcessStop_%PC_I @ N>S%" INI-SECTION S" StopServiceCount" INI-GET-VALUE PC_F_COUNT PLACE PC_F_COUNT COUNT S" " COMPARE 0= NOT PC_F_COUNT COUNT S" 0" COMPARE 0= NOT PC_F_COUNT COUNT S" default value" COMPARE 0= NOT AND AND IF 0 PC_F_I ! PC_F_COUNT COUNT S>NUM 0 DO PC_F_I @ 1 + PC_F_I ! \ S" StopService_%PC_I @%_%PC_F_I @%" EVAL-SUBST PC_SECTION PLACE \ PC_SECTION COUNT INI-SECTION " StopService_%PC_I @ N>S%_%PC_F_I @ N>S%" INI-SECTION S" ProcessName" INI-GET-VALUE PC_PRC_NAME PLACE S" ServiceName" INI-GET-VALUE PC_SRV_NAME PLACE PROC-EXIST: "%PC_PRC_NAME COUNT%" IF START-APP: net stop "%PC_SRV_NAME COUNT%" THEN LOOP THEN \ Нарыть кол-во убиваемых процессов ASKCRON_INI COUNT INI-FILENAME \ S" ProcessStop_%PC_I @%" EVAL-SUBST PC_SECTION PLACE \ PC_SECTION COUNT INI-SECTION " ProcessStop_%PC_I @ N>S%" INI-SECTION S" KillProcessCount" INI-GET-VALUE PC_F_COUNT PLACE PC_F_COUNT COUNT S" " COMPARE 0= NOT PC_F_COUNT COUNT S" 0" COMPARE 0= NOT PC_F_COUNT COUNT S" default value" COMPARE 0= NOT AND AND IF 0 PC_F_I ! PC_F_COUNT COUNT S>NUM 0 DO PC_F_I @ 1 + PC_F_I ! \ S" KillProcess_%PC_I @%_%PC_F_I @%" EVAL-SUBST PC_SECTION PLACE \ PC_SECTION COUNT INI-SECTION " KillProcess_%PC_I @ N>S%_%PC_F_I @ N>S%" INI-SECTION S" ProcessName" INI-GET-VALUE PC_PRC_NAME PLACE PROC-EXIST: "%PC_PRC_NAME COUNT%" IF KILL: "%PC_PRC_NAME COUNT%" THEN LOOP THEN TRAY-REFRESH LEAVE \ Дело сделано. Выйти из цикла THEN LOOP THEN THEN THEN THEN )#
-
ask
-
- Posts: 56
- Joined: Sun, 11 Dec 2011, 09:38
by ask » Sun, 28 Oct 2012, 16:17
Три полезных слова. 1. REG-VALUE-EXIST? - проверяет, существует ли указанный параметр (не ключ!) в реестре. Стырил с англоязычного форума. 2. CRON-SERVICE? - установлен ли nnCron, как сервис (служба) 3. WINx64? - Является ли Windows 64-битной - Code: Select all
: REG-VALUE-EXIST? ( a u -- ?) 1024 ALLOCATE THROW DUP >R ROT ROT [NONAME GET-REG NONAME] CATCH IF 2DROP DROP FALSE ELSE TRUE THEN R> FREE DROP ;
: CRON-SERVICE? ( n -- ? ) S" HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nnCron\ImagePath" REG-VALUE-EXIST? IF TRUE ELSE FALSE THEN ;
: WINx64? ( n -- ? ) S" HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProgramFilesDir (x86)" REG-VALUE-EXIST? IF TRUE ELSE FALSE THEN ;
-
ask
-
- Posts: 56
- Joined: Sun, 11 Dec 2011, 09:38
by anten » Mon, 17 Mar 2014, 23:49
VoidVolker wrote:Вот, сделал почти с нуля скрипт шпиён-диверсант  Записывает в файл все нажатия кнопок и движения курсора, а потом может это все воспроизвести, по умолчанию точность 10 миллисекунд.
я так понял, что должен всё сливать в файл "script.log"?
-
anten
-
- Posts: 18
- Joined: Sat, 17 Mar 2012, 23:13
by VoidVolker » Tue, 18 Mar 2014, 00:48
Не помню =) А вообще, там описание должно быть.
-

VoidVolker
- Site Admin
-
- Posts: 2907
- Joined: Tue, 25 Apr 2006, 17:56
by anten » Tue, 18 Mar 2014, 09:51
VoidVolker wrote:Не помню =) А вообще, там описание должно быть.
а я напомню:) - Code: Select all
#( Запись! \ NoActive WatchHotKey: "@r" NoLog SingleInstance : N>SBL N>S S" " S+ ; : N>SBL+ N>SBL S+ ;
\ Кейлоггинг VARIABLE start-time CREATE LogKeyDN 255 ALLOT : LogKeyDN! LogKeyDN + C! ; ( x code -- ) : LogKeyDN@ LogKeyDN + C@ ; ( code -- )
: log-code >R GetTickCount start-time @ - N>SBL R> N>SBL+ crlf S+ S" script.log" FAPPEND ;
: LOG-ANYKEY-PRESSED 255 1 DO I KEY-PRESSED? IF \ Лог нажатия кнопки I LogKeyDN@ 0= IF \ в прошлый проход эта кнопка была не нажата? I log-code -1 I LogKeyDN! THEN ELSE \ Лог отпускания I LogKeyDN@ IF \ нажималась ли эта кнопка? I NEGATE log-code 0 I LogKeyDN! THEN THEN LOOP ;
\ ху-логгинг : log-moving >R >R GetTickCount start-time @ - N>SBL 0 N>SBL+ R> N>SBL+ R> N>SBL+ crlf S+ S" script.log" FAPPEND ; VARIABLE x-pos VARIABLE y-pos : LOG-MMoving MOUSE-POS x-pos @ y-pos @ D<> IF MOUSE-POS 2DUP log-moving y-pos ! x-pos ! THEN ;
: Шпионить BEGIN 10 PAUSE LOG-ANYKEY-PRESSED LOG-MMoving VK_CONTROL KEY-PRESSED? UNTIL -17 log-code -162 log-code ; Action: 300 300 BEEP S" script.log" FDELETE \ Опционально :) LogKeyDN 255 ERASE x-pos 0! y-pos 0! Шпионить GetTickCount start-time ! 300 300 BEEP )#
<% : FOR-FLINES { xt \ Lf Lc -- } ( a u xt -- ) R/O OPEN-FILE-SHARED THROW TO Lf 258 ALLOCATE THROW TO Lc BEGIN Lc 1+ 255 Lf READ-LINE THROW WHILE Lc C! Lc xt EXECUTE REPEAT DROP Lf CLOSE-FILE DROP ;
: KeyDN CASE 1 OF MOUSE-LBDN ENDOF 2 OF MOUSE-RBDN ENDOF DUP DUP OF specKeyDN ENDOF ENDCASE ;
: KeyUP CASE 1 OF MOUSE-LBUP ENDOF 2 OF MOUSE-RBUP ENDOF DUP DUP OF specKeyUP ENDOF ENDCASE ;
: Диверсия { \ x -- } COUNT <TIB get-number GetTickCount start-time @ - - DUP 0< IF DROP 0 THEN PAUSE get-number TO x x IF x 0> IF x KeyDN THEN x 0< IF x NEGATE KeyUP THEN ELSE get-number get-number MOUSE-MOVE THEN TIB> ; %> #( Воспроизведение@ \ NoActive WatchHotKey: "@p" NoLog SingleInstance Action: 300 300 BEEP GetTickCount start-time ! S" script.log" ['] Диверсия FOR-FLINES 300 300 BEEP )#
-
anten
-
- Posts: 18
- Joined: Sat, 17 Mar 2012, 23:13
by MuR » Wed, 11 Feb 2015, 17:54
Lynx - название виртуальной машиныСодержимое bat-файла или параметра ярлыка: - Code: Select all
D:\cron\nncron.exe -ns -dir D:\cron -runfile D:\cron\start_vm.task Lynx
Для тех, кто использует TotalCommander можно добавить кнопку с параметрами: Command: D:\cron\nncron.exe Parameters: -ns -dir D:\cron -runfile D:\cron\start_vm.task Lynx Start path: D:\cron\ Содержимое d:\CRON\start_vm.task: - Code: Select all
CREATE vm_name 16 ALLOT \ Параметр - имя виртуальной машины для запуска : main get-string vm_name PLACE SWHide StartIn: "d:\VirtualBox\" S" %COMSPEC% /c VBoxManage.exe list runningvms | find /I /N %QUOTE%%vm_name COUNT%%QUOTE% 2>NUL" EVAL-SUBST START-APPW
SWHide StartIn: "d:\VirtualBox"
ExitCodeProc 0= IF \ savestate - записать состояние на диск \ poweroff - завершает работу S" VBoxManage.exe controlvm %QUOTE%%vm_name COUNT%%QUOTE% savestate" START-APP THINT: "Stop" 2 ELSE S" VBoxHeadless.exe -s %QUOTE%%vm_name COUNT%%QUOTE%" START-APP THINT: "Start" 2 THEN ;
-
MuR
-
- Posts: 27
- Joined: Thu, 10 Nov 2005, 08:58
by ANR Daemon » Mon, 16 Feb 2015, 10:22
MuR wrote:Lynx - название виртуальной машиныСодержимое bat-файла или параметра ярлыка: - Code: Select all
D:\cron\nncron.exe -ns -dir D:\cron -runfile D:\cron\start_vm.task Lynx
Для тех, кто использует TotalCommander можно добавить кнопку с параметрами: Command: D:\cron\nncron.exe Parameters: -ns -dir D:\cron -runfile D:\cron\start_vm.task Lynx Start path: D:\cron\ Содержимое d:\CRON\start_vm.task: - Code: Select all
CREATE vm_name 16 ALLOT \ Параметр - имя виртуальной машины для запуска : main get-string vm_name PLACE SWHide StartIn: "d:\VirtualBox\" S" %COMSPEC% /c VBoxManage.exe list runningvms | find /I /N %QUOTE%%vm_name COUNT%%QUOTE% 2>NUL" EVAL-SUBST START-APPW
SWHide StartIn: "d:\VirtualBox"
ExitCodeProc 0= IF \ savestate - записать состояние на диск \ poweroff - завершает работу S" VBoxManage.exe controlvm %QUOTE%%vm_name COUNT%%QUOTE% savestate" START-APP THINT: "Stop" 2 ELSE S" VBoxHeadless.exe -s %QUOTE%%vm_name COUNT%%QUOTE%" START-APP THINT: "Start" 2 THEN ;
Зачем так сложно? Почему просто не сделать ярлык на vboxheadless или даже ещё лучше - vboxmanage, с нужными ключами? (VBoxHeadless будет висеть открытым консольным окном и мешаться под руками.)
-
ANR Daemon
-
- Posts: 234
- Joined: Mon, 26 Feb 2007, 22:59
by AleXH » Sat, 07 Mar 2015, 13:21
Для того, чтобы консольные окна не мешались под руками, можно заюзать TrayIt!, который соберёт все окна в стек в собственном значке в системтрее.
-
AleXH
-
- Posts: 44
- Joined: Sun, 31 Mar 2013, 10:23
by ANR Daemon » Wed, 18 Mar 2015, 12:08
AleXH wrote:Для того, чтобы консольные окна не мешались под руками, можно заюзать TrayIt!, который соберёт все окна в стек в собственном значке в системтрее.
Безумно ценное замечание! Особенно в силу его бессмысленности.
-
ANR Daemon
-
- Posts: 234
- Joined: Mon, 26 Feb 2007, 22:59
by felcons » Sat, 25 Nov 2017, 11:30
посмотрел сообщение в котором описывался скрипт, который записывает нажатие клавиш и мыши, и потом это всё воспроизводит. http://nncron.ru/forums/viewtopic.php?p=10322#p10322попробовал я прописать данные скрипты в мой кронтаб, и сразу ж после сохранения кронтаба ошибки в моем кронтабе в таких строках: : N>SBL N>S S" " S+ ; : FOR-FLINES { xt \ Lf Lc -- } ( a u xt -- ) соответственно если в моём кронтабе то строки 513 и 578. ну и по клавишам он ничего не делает. может есть где исправленный вариант с толковым описанием? с того скрипта ясно, что по горячей клавише запись запускается, но не ясно, как запись остановить.
-
felcons
-
- Posts: 17
- Joined: Fri, 29 Jan 2010, 14:52
by AlikasS » Mon, 27 Nov 2017, 04:56
felcons wrote:посмотрел сообщение в котором описывался скрипт, который записывает нажатие клавиш и мыши, и потом это всё воспроизводит. http://nncron.ru/forums/viewtopic.php?p=10322#p10322попробовал я прописать данные скрипты в мой кронтаб, и сразу ж после сохранения кронтаба ошибки в моем кронтабе в таких строках: : N>SBL N>S S" " S+ ; : FOR-FLINES { xt \ Lf Lc -- } ( a u xt -- ) соответственно если в моём кронтабе то строки 513 и 578. ну и по клавишам он ничего не делает. может есть где исправленный вариант с толковым описанием? с того скрипта ясно, что по горячей клавише запись запускается, но не ясно, как запись остановить.
установил на чистый крон, на чистом кроне требуется еще плагин http://www.nncron.ru/download/plugins/keystate.spfи необходимо поменять местами строки - Code: Select all
Шпионить GetTickCount start-time !
привести к виду - Code: Select all
GetTickCount start-time ! Шпионить
остановка записи по клавише ctrl
-

AlikasS
-
- Posts: 1440
- Joined: Wed, 28 Jun 2006, 05:39
- Location: Khabarovsk
-
by felcons » Mon, 27 Nov 2017, 12:26
установил плагин keystate.spf прописал его в nncron.ini скопировал код задач, и поменял строки местами, как и было описано. прописал в nncron.tab две задачи, и при сохранении файла nncron.tab две ошибки на те ж строки. : N>SBL N>S S" " S+ ; : FOR-FLINES { xt \ Lf Lc -- } ( a u xt -- ) где и что крутить? и кроме того, можна ли сменить остановку записи из клавиши контрол? На контрол, как правило для незрячих есть такое, чтоб останавливать проговаривание програм чтения экрана.
-
felcons
-
- Posts: 17
- Joined: Fri, 29 Jan 2010, 14:52
by AlikasS » Tue, 28 Nov 2017, 03:00
felcons wrote:установил плагин keystate.spf прописал его в nncron.ini
крон перезапустил? felcons wrote:скопировал код задач, и поменял строки местами, как и было описано. прописал в nncron.tab две задачи, и при сохранении файла nncron.tab две ошибки на те ж строки. : N>SBL N>S S" " S+ ; : FOR-FLINES { xt \ Lf Lc -- } ( a u xt -- ) где и что крутить?
надеюсь, задачи добавлял открыв nncron.tab и вставив полностью текст #( Запись! \ NoActive WatchHotKey: "@r" NoLog SingleInstance : N>SBL N>S S" " S+ ; : N>SBL+ N>SBL S+ ; \ Кейлоггинг VARIABLE start-time CREATE LogKeyDN 255 ALLOT : LogKeyDN! LogKeyDN + C! ; ( x code -- ) : LogKeyDN@ LogKeyDN + C@ ; ( code -- ) : log-code >R GetTickCount start-time @ - N>SBL R> N>SBL+ crlf S+ S" script.log" FAPPEND ; : LOG-ANYKEY-PRESSED 255 1 DO I KEY-PRESSED? IF \ Лог нажатия кнопки I LogKeyDN@ 0= IF \ в прошлый проход эта кнопка была не нажата? I log-code -1 I LogKeyDN! THEN ELSE \ Лог отпускания I LogKeyDN@ IF \ нажималась ли эта кнопка? I NEGATE log-code 0 I LogKeyDN! THEN THEN LOOP ; \ ху-логгинг : log-moving >R >R GetTickCount start-time @ - N>SBL 0 N>SBL+ R> N>SBL+ R> N>SBL+ crlf S+ S" script.log" FAPPEND ; VARIABLE x-pos VARIABLE y-pos : LOG-MMoving MOUSE-POS x-pos @ y-pos @ D<> IF MOUSE-POS 2DUP log-moving y-pos ! x-pos ! THEN ; : Шпионить BEGIN 10 PAUSE LOG-ANYKEY-PRESSED LOG-MMoving VK_CONTROL KEY-PRESSED? UNTIL -17 log-code -162 log-code ; Action: 300 300 BEEP S" script.log" FDELETE \ Опционально  LogKeyDN 255 ERASE x-pos 0! y-pos 0! GetTickCount start-time ! Шпионить 300 300 BEEP )# <% : FOR-FLINES { xt \ Lf Lc -- } ( a u xt -- ) R/O OPEN-FILE-SHARED THROW TO Lf 258 ALLOCATE THROW TO Lc BEGIN Lc 1+ 255 Lf READ-LINE THROW WHILE Lc C! Lc xt EXECUTE REPEAT DROP Lf CLOSE-FILE DROP ; : KeyDN CASE 1 OF MOUSE-LBDN ENDOF 2 OF MOUSE-RBDN ENDOF DUP DUP OF specKeyDN ENDOF ENDCASE ; : KeyUP CASE 1 OF MOUSE-LBUP ENDOF 2 OF MOUSE-RBUP ENDOF DUP DUP OF specKeyUP ENDOF ENDCASE ; : Диверсия { \ x -- } COUNT <TIB get-number GetTickCount start-time @ - - DUP 0< IF DROP 0 THEN PAUSE get-number TO x x IF x 0> IF x KeyDN THEN x 0< IF x NEGATE KeyUP THEN ELSE get-number get-number MOUSE-MOVE THEN TIB> ; %> #( Воспроизведение@ \ NoActive WatchHotKey: "@p" NoLog SingleInstance Action: 300 300 BEEP GetTickCount start-time ! S" script.log" ['] Диверсия FOR-FLINES 300 300 BEEP )# ну и не мешает приложить лог, после перечитывания кронтабов, как установлен крон, на какой системе felcons wrote:и кроме того, можна ли сменить остановку записи из клавиши контрол? На контрол, как правило для незрячих есть такое, чтоб останавливать проговаривание програм чтения экрана.
в куске кода - Code: Select all
VK_CONTROL KEY-PRESSED?
VK_CONTROL клавиша для остановки записи скрипта, варианты можно выбрать в плагине keystate.spf
-

AlikasS
-
- Posts: 1440
- Joined: Wed, 28 Jun 2006, 05:39
- Location: Khabarovsk
-
Return to nnCron forum (Russian)
Who is online
Users browsing this forum: Google [Bot] and 2 guests
|
|