freakdragon
Новичок
- Сообщения
- 4
- Репутация
- 0
Создал скрипт, окрывающий окно и по времени либо нажатию кнопки Отмена закрывающий его
Поытался вставить его в другой скрипт. Теперь окно перестало закрываться
Код:
#include <GUIConstants.au3>
#include <date.au3>
Opt("GUICoordMode",1)
$mainwindow = GUICreate("Скрипт копирования БД", 300, 200) ; will create a dialog box that when displayed is centered
$OKButton = GUICtrlCreateButton("OK", 70, 150, 60)
$CancelButton = GUICtrlCreateButton("Отмена", 160, 150, 60)
$Label = GUICtrlCreateLabel ("Через минуту, когда заполнится прогресс, начнется копирование БД."& _
@CR&"Для прерывания операции нажмите кнопку Отмена", 20, 35, 270, 100)
$EditBar = GUICtrlCreateEdit ("60",135, 85, 20, 20)
$ProgressBar = GUICtrlCreateProgress (25,110,240,20)
GUISwitch($mainwindow)
GUISetState(@SW_SHOW)
$i = @SEC
$DoubleProgress=0
While 1
$msg = GUIGetMsg()
If GUICtrlRead($EditBar) > 0 Then
$j=@SEC
If $i<>$j Then
$DoubleProgress+=1.67
GUICtrlSetData ($ProgressBar,$DoubleProgress)
$i=$j
GUICtrlSetData ($EditBar,GUICtrlRead($EditBar)-1)
EndIf
Sleep(25)
Select
Case $msg = $OKButton
MsgBox(0, "GUI Event", "You pressed OK!")
Case $msg = $CancelButton
ExitLoop
WinClose("Скрипт копирования БД")
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
Else
GUICtrlSetData ($Label,"Копирование началось")
GUICtrlSetState ($EditBar, $GUI_HIDE)
GUICtrlSetState ($OKButton, $GUI_HIDE)
GUICtrlSetState ($CancelButton, $GUI_HIDE)
$DoubleProgress=0
GUICtrlSetData ($ProgressBar,$DoubleProgress)
Sleep(1000)
GUICtrlSetData ($Label,"Копирование успешно завершено")
Sleep(1000)
ExitLoop
WinClose("Скрипт копирования БД")
EndIf
WEnd
Поытался вставить его в другой скрипт. Теперь окно перестало закрываться
Код:
#include <Date.au3>
#include <Array.au3>
#include <File.au3>
#include <GUIConstants.au3>
Dim $nazv_predp[13]=["CKO", "GRO", "GVA", "RAU","RRZ", "RVC", _
"SDZ", "SFR", "SKO", "SKY", "SUR", "SUY", "SVA"];массив всех названий предприятий
Dim $nazv_pap_exe[3]=["personal", "wintu", "WinZ"];массив с названиями папок
$path_from='\\C-DGO-RDS01-MFS\data\cit_work\';начало пути для чтения
$path_to='\\C-DGO-RDS01-MFS\data\cit_ext\';начало пути для записи
$besk=1
While $besk <> 0;бесконечный цикл
$tek_vr = @HOUR & "-" & @MIN;берем текущее время
$asResult = StringRegExp($tek_vr, '(1[7-9]-[0-5][0-9])');если сейчас от 17-00 до 19-59, то переменной $asResult присвается значение 1
if $asResult=1 Then
$nazv_date_time=@MDAY&"."&@MON&"."&@YEAR&"_"&@HOUR&"-"&@MIN&"_1";уникальное имя папки, в которой будут храниться папки "personal", "wintu", "WinZ"
Dim $NeedCopyPredp[13]=[1,1,1,1,1,1,1,1,1,1,1,1,1];нужно ли создавать копию для тек. предприятия (1-нужно, 0-не нужно)
$NeedCopy=0;нужно ли вообще создавать копию (1-нужно, 0-не нужно)
$prov="[0-9][0-9]."&@MON&"."&@YEAR&"*";регулярное выражение для проверки текущего месяца+года
#comments-start
For $i=0 To 12 Step 1;перебор всех предприятий
$aDirs = _FileListToArray($path_to&$nazv_predp[$i]&"\", "*", 2);сканируем папку i-го из предприятий на наличие папки с таким месяцем+годом
If UBound($aDirs)<>1 Then;если папка i-го предприятия не пуста, то проверяем на наличие папки с данным месяцем+годом
For $j=1 To UBound($aDirs)-1 Step 1;перебор всех папок i-го предприятия для сравнения
If StringRegExp($aDirs[$j], $prov, 0) Then;если найдена папка с таким месяцем+годом, то создавать копию i-го предприятия не нужно
$NeedCopyPredp[$i]=0
EndIf
Next
EndIf
Next
For $i=0 To 12 Step 1
If $NeedCopyPredp[$i]=1 Then
$NeedCopy=1
EndIf
Next
#comments-end
$NeedCopy=1; это потом убрать
If $NeedCopy=1 Then
;вставка1_начало
Opt("GUICoordMode",1)
$mainwindow = GUICreate("Скрипт копирования БД", 300, 200) ; will create a dialog box that when displayed is centered
;GUISetOnEvent($GUI_EVENT_CLOSE, "CloseClicked")
$OKButton = GUICtrlCreateButton("OK", 70, 150, 60)
;GUICtrlSetOnEvent($OKButton, "OKButton")
$CancelButton = GUICtrlCreateButton("Отмена", 160, 150, 60)
;GUICtrlSetOnEvent($CancelButton, "CancelButton")
$Label = GUICtrlCreateLabel ("Через минуту, когда заполнится прогресс, начнется копирование БД."& _
@CR&"Для прерывания операции нажмите кнопку Отмена", 20, 35, 270, 100)
$EditBar = GUICtrlCreateEdit ("60",135, 85, 20, 20)
$ProgressBar = GUICtrlCreateProgress (25,110,240,20)
GUISwitch($mainwindow)
GUISetState(@SW_SHOW)
$i = @SEC
$DoubleProgress=0
;вставка1_конец
;вставка2_начало
While 1
;_NowTime()
$msg = GUIGetMsg()
If GUICtrlRead($EditBar) > 0 Then
$j=@SEC
;For $i = $s To 100
If $i<>$j Then
$DoubleProgress+=1.67
;GUICtrlSetData ($ProgressBar,GUICtrlRead($ProgressBar)+1.67)
GUICtrlSetData ($ProgressBar,$DoubleProgress)
$i=$j
GUICtrlSetData ($EditBar,GUICtrlRead($EditBar)-1)
EndIf
Sleep(25)
;Next
Select
Case $msg = $OKButton
MsgBox(0, "GUI Event", "You pressed OK!")
Case $msg = $CancelButton
;MsgBox(0, "GUI Event", "You pressed Cancel!")
ExitLoop
WinClose("Скрипт копирования БД")
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
Else
GUICtrlSetData ($Label,"Копирование началось")
GUICtrlSetState ($EditBar, $GUI_HIDE)
GUICtrlSetState ($OKButton, $GUI_HIDE)
GUICtrlSetState ($CancelButton, $GUI_HIDE)
$DoubleProgress=0
GUICtrlSetData ($ProgressBar,$DoubleProgress)
;вставка2_конец
For $i=0 To 12 Step 1;перебор всех предприятий
If $NeedCopyPredp[$i]=1 Then;если нужна копия данного предприятия
For $j = 0 to 2 Step 1;счетчик для перебора названий "personal", "wintu", "WinZ"
;вставка3_начало
GUICtrlSetData ($Label,"Производится копирование"&$nazv_predp[$i]&"\"&$nazv_pap_exe[$j])
Sleep(1000); это потом убрать
;вставка3_конец
; DirCopy($path_from&$nazv_predp[$i]&'\'&$nazv_pap_exe[$j]&"\"&'exe', _;путь откуда копируем данные
; $path_to&$nazv_predp[$i]&"\"&$nazv_date_time&'\'&$nazv_pap_exe[$j]&'\', 1);путь куда копируем данные
Next
EndIf
$DoubleProgress+=7.7
GUICtrlSetData ($ProgressBar,$DoubleProgress)
Next
;вставка4_начало
GUICtrlSetData ($Label,"Копирование успешно завершено")
Sleep(1000)
ExitLoop
WinClose("Скрипт копирования БД")
EndIf
WEnd
;вставка4_конец
EndIf
EndIf
Sleep (60000);спим час после проверки
WEnd