Старожил
Сообщения: 352
Благодарности: 44
|
Профиль
|
Отправить PM
| Цитировать
Здравствуйте !
Есть скриптик установки программ :
Цитата:
Global $StartTicksNET,$StartTicksNETObshee,$EndTicksNET,$StartTicksNET,$EndTicksNETObshee,$Hour, $Min, $Sec,$Mins,$Secs,$Time,$ProgressBARTime,$HourObshee, $MinsObshee, $SecsObshee
Global $TimeObshee,$ProgressBARTimeObshee,$Label1,$Label2
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <Date.au3>
$Form1 = GUICreate("Form1", 633, 134, 192, 124)
$Progress1 = GUICtrlCreateProgress(8, 32, 614, 17)
$Progress2 = GUICtrlCreateProgress(8, 88, 614, 17)
$Label1 = GUICtrlCreateLabel("", 8, 8, 620, 17, $SS_CENTER)
$Label2 = GUICtrlCreateLabel("", 8, 64, 612, 17, $SS_CENTER)
GUISetState(@SW_SHOW)
AdlibRegister("Timer", 50)
AdlibRegister("Timer_Obshee", 50)
AdlibRegister("TimerReal", 50)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Func Timer()
_TicksToTime($EndTicksNET-$StartTicksNET, $Hour, $Mins, $Secs)
Local $sTime = $Time ; save current time to be able to test and avoid flicker..
$Time = StringFormat("%02i мин. %02i сек.", $Mins, $Secs)
If $sTime <> $Time Then
GUICtrlSetData ($Label1,"Время текущей установки : " & $Time)
GUICtrlSetData ($Progress1,100-(((($Mins*60)+$Secs)*100)/$ProgressBARTime))
EndIf
EndFunc ;==>Timer
Func Timer_Obshee()
_TicksToTime($EndTicksNETObshee-$StartTicksNETObshee, $HourObshee, $MinsObshee, $SecsObshee)
Local $sTime = $TimeObshee ; save current time to be able to test and avoid flicker..
$TimeObshee = StringFormat("%02i мин. %02i сек.", $MinsObshee, $SecsObshee)
If $sTime <> $TimeObshee Then
GUICtrlSetData ($Label2,"Общее время : " & $TimeObshee)
GUICtrlSetData ($Progress2,100-(((($MinsObshee*60)+$SecsObshee)*100)/$ProgressBARTimeObshee))
EndIf
EndFunc ;==>Timer
Func TimerReal()
$StartTicksNET = _TimeToTicks(@HOUR,@MIN,@SEC)
$StartTicksNETObshee = _TimeToTicks(@HOUR,@MIN,@SEC)
EndFunc
Func _NET_TIME_Prog($timeTekInstall)
$EndTicksNET=$StartTicksNET + $timeTekInstall
_TicksToTime($EndTicksNET-$StartTicksNET, $Hour, $Mins, $Secs)
$ProgressBARTime=($Mins*60)+$Secs
EndFunc
Func _NET_TIME_Obshee($Obshee_Vremya)
$EndTicksNETObshee=$StartTicksNETObshee + $Obshee_Vremya
_TicksToTime($EndTicksNETObshee-$StartTicksNETObshee, $HourObshee, $MinsObshee, $SecsObshee)
$ProgressBARTimeObshee=($MinsObshee*60)+$SecsObshee
EndFunc
Func _SpeedTimeProgram($procent)
For $i = $procent To 100 Step 1
Sleep(10)
GUICtrlSetData ($Progress1,$i)
Next
EndFunc
_NET_TIME_Obshee(65000)
_NET_TIME_Prog(15000)
Sleep(7000)
_SpeedTimeProgram(100-(((($Mins*60)+$Secs)*100)/$ProgressBARTime))
Sleep(3000)
|
Где _NET_TIME_Obshee( 65000)-общее время установки всех программ, _NET_TIME_Prog( 15000)-Предполагаемое время установки текущей программы,Sleep( 7000)-вместо 15000 установилась за 7000
Первая проблема-немогу заставить работать скрипт-только нужно нажать ЗАКРЫТЬ (убирал While 1...WEnd-все равно не хочет).
Вторая проблема-Нужно чтобы, если время текущей программы равно 15 сек., а устанавливается она за 7 сек, то чтобы ускорялся и шёл до конча (вроде бы сделал-правильно или нет, но работает почти) и одновремменно с такой же скоростью время $Label1 уменьшалось до нулей.
Желательно чтобы от общего времени $Label2 и $Progress2 тоже уменьшался.
Заранее спасибо, надеюсь на Вашу помощь.
|