Что нового

Доделать скрипт по созданию скриншота

Timerlan

Новичок
Сообщения
93
Репутация
0
Уважаемые гуру! Есть скрипт по созданию скриншота, но его нужно чуток допилить. Помогите пожалуйста.
Так вот начнем с того, что вот у меня есть скрипт который создает пустышки на серваке допустим он их создает в 9 часов утра. А этот скрипт который я показал вам он делает скриншот и копирует его на сервак и заменяет одну пустышку. Так вот суть этого скрипта в том что он должен делать скрин в определенное время которое я указываю в скрипте. А сейчас он мне делает скрин, когда появится на серваке пустышка он делает скриншот и отправляет его на сервак. Если же на серваке нету ваще этих пустышек то он делает как положено в определенное время которое я задал. Воот чет не могу разобратся как нормально привести в работу этот скрипт((( Короче суть в чем мне нужно чтоб он делал в определенное время скриншот.


Код:
#NoTrayIcon
#include <ScreenCapture.au3>
#include <File.au3>
Global $iTimeOut = 60000;таймаут в мсек

HotKeySet('{Esc}', '_Exit')
;_MyScreen()
;AdlibRegister('_MyScreen', $iTimeOut)
Global $s_Dir = @ScriptDir & '\Screen\'
While 1
    If @HOUR = '12'And @MIN = '00' And @SEC = '00' Then _MyScreen()
    If @MDAY = '20' And @HOUR = '13' And @MIN = '00' And @SEC = '00' Then
    $array = _FileListToArray($s_Dir,'*.png',1)
    For $i = 1 To UBound($array) -1
        FileDelete($array[$i])
    Next
    EndIf
    Sleep(100)
WEnd

Func _MyScreen()
    Local $s_FileName, $f_Cursor = False, $s_date = StringFormat('%s.%s.%s.%s', @MDAY, @MON, @YEAR)
    If Not FileExists($s_Dir) Then DirCreate($s_Dir)
    $s_FileName = StringFormat('%s.%s.%s.%s %s.%s.%s.jpg', @ComputerName, @MDAY, @MON, @YEAR, @HOUR, @MIN, @SEC)
    _ScreenCapture_Capture($s_Dir & $s_FileName, 0, 0, @DesktopWidth, @DesktopHeight, $f_Cursor)
    $array_shar = _FileListToArray('C:\screen\' & $s_date, '*.jpg', 1)
    For $i = 1 To UBound($array_shar) - 1
        $string_comp = StringInStr($array_shar[$i], 'NoScreen')
        If Not $string_comp = 0 Then
            FileDelete('C:\screen\' & $s_date & '\' & $array_shar[$i])
            FileCopy($s_Dir & '\' & $s_FileName, 'C:\screen\' & $s_date & '\' & $s_FileName)
            ExitLoop
        EndIf
    Next
EndFunc
 

Spyhunter

Знающий
Сообщения
56
Репутация
13
Код:
If @MDAY = '20' And @HOUR = '13' And @MIN = '00' And @SEC = '00' Then
; выполнена функция 20 числа; в 13:00:00
EndIf


если я тебя правильно понял
 
Автор
T

Timerlan

Новичок
Сообщения
93
Репутация
0
Нет эта функция нам говорит о том что каждого 20 числа месяца в 13:00 все файлы локально которые создались будут удалятся.
Код:
If @MDAY = '20' And @HOUR = '13' And @MIN = '00' And @SEC = '00' Then
; выполнена функция 20 числа; в 13:00:00
EndIf


А эта функция говорит нам о том что в 12:00 должна сделать скриншот. Она делает тока в том случае если на серваке у меня нету заранее созданной пустышки jpg, а если пустышка есть то он делает не по времени, а тогда когда появится пустышка. Вот этот момент чет я не могу понять где исправить
Код:
If @HOUR = '12'And @MIN = '00' And @SEC = '00' Then _MyScreen() ; Время когда должен сделать скриншот
 

joiner

Модератор
Локальный модератор
Сообщения
3,570
Репутация
632
Timerlan [?]
а если пустышка есть то он делает не по времени, а тогда когда появится пустышка. Вот этот момент чет я не могу понять где исправить
время задано. функция опирается именно на это, а не на появление файлов-пустышек
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Во-первых, нужно определить
Код:
Global $s_Dir = @ScriptDir & '\Screen\'

до вызова функции _MyScreen().

Во-вторых,
Код:
$s_date = StringFormat('%s.%s.%s.%s', @MDAY, @MON, @YEAR)

на выходе дает 30.03.2013. (точка в конце, после которой ничего нет), думаю вы забыли передать сюда имя компьютера @ComputerName и скрипт не находит такой папки. Следут вегда проверять что получает скрипт при обработке, когда есть какие-то неясности, через
Код:
ConsoleWrite($s_date)
или
Код:
_ArrayDisplay($array_shar)


В-третьих, кусок кода
Код:
$string_comp = StringInStr($array_shar[$i], 'NoScreen')
If Not $string_comp = 0 Then
    FileDelete('C:\screen\' & $s_date & '\' & $array_shar[$i])
    FileCopy($s_Dir & '\' & $s_FileName, 'C:\screen\' & $s_date & '\' & $s_FileName)
    ExitLoop
EndIf

лучше написать так:
Код:
If StringInStr($array_shar[$i], 'NoScreen') Then
    FileDelete('C:\screen\' & $s_date & '\' & $array_shar[$i])
    FileCopy($s_Dir & '\' & $s_FileName, 'C:\screen\' & $s_date & '\' & $s_FileName)
    ExitLoop
EndIf

а то мозг можно вывихнуть на конструкции If Not $x = 0

В-пятых, это для вас понятно что такое "пустышка", а для тех кто впервые видит ваш скрипт это слово ни о чем не говорит, пишите более ясно, например, "скрипт должен делать скриншоты каждую минуту и проверять папку C:\Screen\... на наличие в ней файлов с названием NoScreen... и если там такие есть, то удалять его и заливать взамен свежий скриншот". Тут далеко не все финалисты битвы экстрасенсов и могут не вникнув в тему пройти мимо, а вы останетесь без решения ;)
 
Верх