A
at
Гость
Здравствуйте.
Выложил скрипт, который наблюдает за удаленной рабочей станцией. В течении дня один-два раза появляется сообщение об ошибке "Error allocating memory". Пожалуйста, подскажите, в чем причина.
Выложил скрипт, который наблюдает за удаленной рабочей станцией. В течении дня один-два раза появляется сообщение об ошибке "Error allocating memory". Пожалуйста, подскажите, в чем причина.
Код:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: Anton Czekhov 2011
Script Function:
Monitoring and automation trading.
#ce ----------------------------------------------------------------------------
While 1 ;основной цикл
Sleep(100) ;пауза, чтобы процессор не грузился
$vSpam = WinGetHandle('', 'Недопустимое окно') ;получаем хэндл текущего окна 'Недопустимое окно'
If $vSpam Then ;если есть окно 'Недопустимое окно'(его хэндл), тогда
While WinExists('', 'Недопустимое окно') ;цикл (пока сушествуют окна 'Недопустимое окно')>>
Sleep(100) ;пауза, чтобы процессор не грузился
WinClose('', 'Недопустимое окно') ;>> закрываем все окна 'Недопустимое окно'
WEnd ;конец цикла (все окна 'Недопустимое окно' закрыты)
EndIf
Sleep(100) ;пауза, чтобы процессор не грузился
$vExit = WinGetHandle('Сбой приема') ;получаем хэндл текущего окна 'Сбой приема'
If $vExit Then ;если есть окно 'Сбой приема'(его хэндл), тогда
Sleep(10000) ;делаем паузу 10 секунд, за это времямя все должны появиться все возможные окна 'Сбой приема'
Close() ;вызываем функцию Close
EndIf
Sleep(100) ;пауза, чтобы процессор не грузился
$vFileSmsIn = FileOpen('C:\Program Files\Control\simpl\autoread.txt', 0) ;открываем файл для чтения autoread.txt
$vLineSmsIn = FileReadLine($vFileSmsIn) ;получаем текст
Switch StringRight($vLineSmsIn, 1) ;сравниваем текст по условию
Case 'S' ;если в конце текста латинская 'S', тогда
Start() ;вызываем функцию Start, запускаем приложение в режиме F2
Case 'R' ;если в конце текста латинская 'R', тогда
Rezerv() ;вызываем функцию Rezerv
Case 'M' ;если в конце текста латинская 'M', тогда
Monitor() ;вызываем функцию Monitor, запускаем приложение в режиме монитора
EndSwitch
WEnd
Func Close() ;функция Close
While WinExists('Сбой приема') ;цикл (пока сушествуют окна 'Сбой приема')>>
Sleep(100) ;пауза, чтобы процессор не грузился
WinClose('Сбой приема') ;>> закрываем все окна 'Сбой приема'
WEnd ;конец цикла (все окна 'Сбой приема' закрыты)
SMS() ;вызываем функцию SMS
Sleep(10000) ;делаем паузу 10 секунд
WinClose('G ') ;закрываем окно
Sleep(10) ;пауза, чтобы процессор не грузился
WinClose('S ') ;закрываем окно
Sleep(10) ;пауза, чтобы процессор не грузился
WinClose('l ') ;закрываем окно
Sleep(10) ;пауза, чтобы процессор не грузился
WinClose('G') ;закрываем окно
Sleep(10) ;пауза, чтобы процессор не грузился
WinClose('S') ;закрываем окно
Sleep(10) ;пауза, чтобы процессор не грузился
WinClose('l') ;закрываем окно
EndFunc
Func SMS() ;функция SMS
$vTextpozG = ControlGetText('G', '', '[CLASS:TEdit; INSTANCE:20]') ;получаем значения из окна
$vTextpozS = ControlGetText('S', '', '[CLASS:TEdit; INSTANCE:20]') ;получаем значения из окна
$vTextpozL = ControlGetText('l', '', '[CLASS:TEdit; INSTANCE:20]') ;получаем значения из окна
$vFileSmsOut = FileOpen('C:\Program Files\Control\simpl\SimpleSMSlite.txt', 2) ;Перезаписываем файл SimpleSMSlite.txt
FileWrite($vFileSmsOut,'79163667335;M;L;') ;Вносим в файл SimpleSMSlite.txt номер сотового телефона получателя
FileClose($vFileSmsOut) ;Закрываем файл SimpleSMSlite.txt
$vTextG5 = WinGetHandle('G') ;получаем хэндл текущего окна 'G'
$vTextS5 = WinGetHandle('S') ;получаем хэндл текущего окна 'S'
$vTextL5 = WinGetHandle('L') ;получаем хэндл текущего окна 'L'
$vTextG1 = WinGetHandle('G') ;получаем хэндл текущего окна 'G'
$vTextS1 = WinGetHandle('S') ;получаем хэндл текущего окна 'S'
$vTextL1 = WinGetHandle('L') ;получаем хэндл текущего окна 'L'
$vFileSmsOut = FileOpen('C:\Program Files\Control\simpl\SimpleSMSlite.txt', 1);Дописываем файл SimpleSMSlite.txt
If $vTextG5 Then
FileWrite($vFileSmsOut,'G5=');Добавляем сообщение
FileWrite($vFileSmsOut,$vTextpozG) ;Добавляем значения из окна
FileWrite($vFileSmsOut,': ');Добавляем в текст разделитель
EndIf
If $vTextS5 Then
FileWrite($vFileSmsOut,'S5=');Добавляем сообщение
FileWrite($vFileSmsOut,$vTextpozS) ;Добавляем значения из окна
FileWrite($vFileSmsOut,': ');Добавляем в текст разделитель
EndIf
If $vTextL5 Then
FileWrite($vFileSmsOut,'L5=');Добавляем сообщение
FileWrite($vFileSmsOut,$vTextpozL) ;Добавляем значения из окна
FileWrite($vFileSmsOut,': ');Добавляем в текст разделитель
EndIf
If $vTextG1 Then
FileWrite($vFileSmsOut,'G6=');Добавляем сообщение
FileWrite($vFileSmsOut,$vTextpozG) ;Добавляем значения из окна
FileWrite($vFileSmsOut,': ');Добавляем в текст разделитель
EndIf
If $vTextS1 Then
FileWrite($vFileSmsOut,'S6=');Добавляем сообщение
FileWrite($vFileSmsOut,$vTextpozS) ;Добавляем значения из окна
FileWrite($vFileSmsOut,': ');Добавляем в текст разделитель
EndIf
If $vTextL1 Then
FileWrite($vFileSmsOut,'L6=');Добавляем сообщение
FileWrite($vFileSmsOut,$vTextpozL) ;Добавляем значения из окна
EndIf
FileWrite($vFileSmsOut,'.');Добавляем точку
FileClose($vFileSmsOut) ;Закрываем файл SimpleSMSlite.txt
ShellExecute('simplesmslite.exe', 'ERR=3', 'C:\Program Files\Control\simpl\') ;запускаем программу Simplesms (отправляем sms)
EndFunc
Func Start() ;функция Start, запускаем приложение
FileOpen('C:\Program Files\Control\simpl\autoread.txt', 2) ;удаляем содержимое файла autoread.txt
Sleep(100) ; пауза
FileChangeDir('C:\Program Files\Control\') ; указываем каталог программы
Run('Robot.exe') ;запускаем файл Robot.exe
FileClose($vFileSmsIn)
Sleep(10000) ;делаем паузу 10 секунд
SMS() ;вызываем функцию SMS, отправляем информацию о состоянии приложения
EndFunc
Func Rezerv() ;резервная функция
FileOpen('C:\Program Files\Control\simpl\autoread.txt', 2) ;удаляем содержимое файла autoread.txt
MsgBox(0, 'Info', 'Резервная функция')
FileClose($vFileSmsIn)
EndFunc
Func Monitor() ;вызываем функцию Monitor, запускаем приложение в режиме монитора
FileOpen('C:\Program Files\Control\simpl\autoread.txt', 2) ;удаляем содержимое файла autoread.txt
Sleep(100) ; пауза
FileChangeDir('C:\Program Files\Control\') ; указываем каталог программы
Run('Robot_monitor.exe') ;запускаем файл Robot_monitor.exe
FileClose($vFileSmsIn)
Sleep(10000) ;делаем паузу 10 секунд
SMS() ;вызываем функцию SMS, отправляем информацию о состоянии приложения
EndFunc