; @AZJIO 19.04.2010 #NoTrayIcon ;скрыть в системной панели индикатор AutoIt Global $Ini = @ScriptDir&'\timesoft.txt' ; путь к timesoft.txt ;Проверка существования timesoft.txt $answer = "" If Not FileExists($Ini) Then $answer = MsgBox(4, "Выгодное предложение", "Хотите создать необходимый timesoft.txt"&@CRLF&"для создания табличного списка программ?") If $answer = "6" Then $iniopen = FileOpen($Ini,1) FileWrite($iniopen, _ 'Интернет|Игровой|Без инета|2' & @CRLF & _ 'путь|время|состояние1|состояние2|состояние3|имя(необязательное) # сверху имена кнопок и стартовый профиль (эта строка справки не читается)' & @CRLF & _ 'C:\Program Files\Serv-U\Start_Serv-U.bat|1|1|0|0|Serv-U' & @CRLF & _ 'C:\Program FilesuTorrent\utorrent.exe|5|1|0|0|' & @CRLF & _ 'C:\Program Files\AnVir Task Manager\AnVir.exe|7|1|0|1|' & @CRLF & _ 'C:\Program Files\Arum Switcher\ArumSwitcher.exe|9|1|0|1|' & @CRLF & _ 'C:\Program Files\clcl\clcl.exe|12|1|0|1|' & @CRLF & _ 'C:\Program Files\Power Mixer\pwmixer.exe|13|1|1|1|Power Mixer' & @CRLF & _ 'C:\Program Files\ruslat\ruslat.exe|14|1|1|1|' & @CRLF & _ 'C:\Program Files\SuperCopier2\SuperCopier2.exe|15|1|0|1|' & @CRLF & _ 'C:\Program Files\Tray Commander\TC.exe|16|1|0|1|' & @CRLF & _ 'C:\Program Files\Arsenal Company\Сократ Персональный 4.1\spv.exe|18|1|0|1|Сократ' ) FileClose($iniopen) EndIf $timer = TimerInit() ; засекаем время $file = FileOpen($Ini, 0) $filetext = FileRead($file) FileClose($file) ;кусок кода из UDF File.au3 для разделения образца построчно в массив If StringInStr($filetext, @LF) Then $aFiletext = StringSplit(StringStripCR($filetext), @LF) ElseIf StringInStr($filetext, @CR) Then ;; @LF does not exist so split on the @CR $aFiletext = StringSplit($filetext, @CR) Else ;; unable to split the file If StringLen($filetext) Then Dim $aFiletext[2] = [1, $filetext] Else MsgBox(0, "Сообщение", "нет данных о программах в wim") Exit EndIf EndIf $n=UBound($aFiletext) - 1 For $i = 3 to $n ; создаём переменные в цикле $aSoft = StringSplit($aFiletext[$i], "|") Assign('PTH' & $i, $aSoft[1]) Assign('TME' & $i, $aSoft[2]) For $u = 1 to 3 Assign('ch_'&$u&'_' & $i, $aSoft[$u+2]) Next If $aSoft[6] = '' Then Assign('NME' & $i, StringRegExpReplace ($aSoft[1], "(^.*)\\(.*)\.(.*)$", '\2')) Else Assign('NME' & $i, $aSoft[6]) EndIf Assign('re' & $i, 0) Next ;вычисляем максимальное значание для таймера $d=0 For $i = 1 to $n If $d<Int(Eval('TME'&$i)) Then $d=Int(Eval('TME'&$i)) Next $aButton = StringSplit($aFiletext[1], "|") GUICreate("Автостарт программ",270,$n*20+40) ; размер окна $restart0 = GUICtrlCreateButton("R", 250, 2, 18, 18) GUICtrlSetTip(-1, "Перезапуск скрипта.") $start1=GUICtrlCreateButton ('^'&$aButton[1], 10,$n*20-30,62,20) $start2=GUICtrlCreateButton ('^'&$aButton[2], 30,$n*20-10,62,20) $start3=GUICtrlCreateButton ('^'&$aButton[3], 50,$n*20+10,62,20) $timeLabel=GUICtrlCreateLabel ('',120, $n*20-25,147,30) GUICtrlSetTip(-1, "Tаймер и профиль.") GUICtrlSetColor(-1,0xEE0000) ; Red GUICtrlSetFont (-1,15) $stopButton=GUICtrlCreateButton ('Стоп', 120,$n*20+5,62,25) GUICtrlSetTip(-1, "Остановить/запустить таймер.") $stoptimer=0 $symma=0 $checkall=GUICtrlCreateCheckbox ('', 10,$n*20+10,20,20) GuiCtrlSetState(-1, 1) GUICtrlSetTip(-1, "вкл/выкл все галочки") ; создание чекбоксов в GUI-оболочке For $i = 3 To $n $pos = $i * 20 - 50 Assign('check_D' & $i, GUICtrlCreateButton (Eval('NME'&$i), 70, $pos, 120, 20)) Assign('check_D1_' & $i, GUICtrlCreateCheckbox ('', 10, $pos, 15, 15)) GuiCtrlSetState(Eval('check_D1_' & $i), Eval('ch_1_'&$i)) Assign('check_D2_' & $i, GUICtrlCreateCheckbox ('', 30, $pos, 15, 15)) GuiCtrlSetState(Eval('check_D2_' & $i), Eval('ch_2_'&$i)) Assign('check_D3_' & $i, GUICtrlCreateCheckbox ('', 50, $pos, 15, 15)) GuiCtrlSetState(Eval('check_D3_' & $i), Eval('ch_3_'&$i)) Assign('time' & $i, GUICtrlCreateLabel (Eval('TME'&$i)&' сек', 200, $pos, 45, 15)) Next GUISetState () $x=0 While 1 $msg = GUIGetMsg() Sleep(10) $z=Ceiling((TimerDiff($timer)+$symma)/1000) ;цикл автостарта, проверка всех условий For $i = 3 To $n If $stoptimer=0 And Eval('re'&$i) =0 And GUICtrlRead(Eval('check_D'&$aButton[4]&$i))=1 And Eval('TME'&$i)<$z Then If FileExists(Eval('PTH'&$i)) Then ShellExecute(Eval('PTH'&$i)) Sleep(300) GuiCtrlSetState(Eval('re' & $i), 1) EndIf GuiCtrlSetState(Eval('check_D'&$aButton[4]&$i), 4) EndIf Next ;секундомер в оболочке If $stoptimer=0 and $z= $x+1 and $z<$d+1 Then If $z=$d Then GUICtrlSetData($timeLabel,'-'&$d&'- '&$aButton[$aButton[4]]) $x=0 Else GUICtrlSetData($timeLabel,$z&' '&$aButton[$aButton[4]]) $x=$z EndIf EndIf ; проверка нажатий кнопок программ в оболочке For $i = 3 To $n If $msg = Eval('check_D'&$i) And FileExists(Eval('PTH'&$i)) Then ShellExecute(Eval('PTH'&$i)) GuiCtrlSetState(Eval('re' & $i), 1) Sleep(300) EndIf Next Select Case $msg = $stopButton ;остановка/запуск таймера If $stoptimer=0 Then $stoptimer=1 GUICtrlSetData($stopButton,"Старт") $symma+=Ceiling(TimerDiff($timer)) Else $stoptimer=0 GUICtrlSetData($stopButton,"Стоп") $timer = TimerInit() EndIF Case $msg = $start1 ; три кнопки запуска профилей For $i = 3 To $n If GUICtrlRead(Eval('check_D1_'&$i))=1 And FileExists(Eval('PTH'&$i)) Then ShellExecute(Eval('PTH'&$i)) GuiCtrlSetState(Eval('check_D1_' & $i), 4) GuiCtrlSetState(Eval('re' & $i), 1) Sleep(300) EndIf Next Case $msg = $start2 For $i = 3 To $n If GUICtrlRead(Eval('check_D2_'&$i))=1 And FileExists(Eval('PTH'&$i)) Then ShellExecute(Eval('PTH'&$i)) GuiCtrlSetState(Eval('check_D2_' & $i), 4) GuiCtrlSetState(Eval('re' & $i), 1) Sleep(300) EndIf Next Case $msg = $start3 For $i = 3 To $n If GUICtrlRead(Eval('check_D3_'&$i))=1 And FileExists(Eval('PTH'&$i)) Then ShellExecute(Eval('PTH'&$i)) GuiCtrlSetState(Eval('check_D3_' & $i), 4) GuiCtrlSetState(Eval('re' & $i), 1) Sleep(300) EndIf Next ; Снять / поставить галочки Case $msg = $checkall If GUICtrlRead($checkall)=1 Then $p=1 Else $p=4 EndIf For $i = 3 To $n For $u = 1 to 3 GuiCtrlSetState(Eval('check_D' &$u&'_'& $i), $p) Next Next Case $msg = $restart0 _ScriptRestart() Case $msg = -3 ExitLoop EndSelect WEnd ; функция перезапуска скрипта Func _ScriptRestart() Local $sAutoIt_File = @TempDir & "\~Au3_ScriptRestart_TempFile.au3" Local $sRunLine, $sScript_Content, $hFile $sRunLine = @ScriptFullPath If Not @Compiled Then $sRunLine = @AutoItExe & ' /AutoIt3ExecuteScript ""' & $sRunLine & '""' If $CmdLine[0] > 0 Then $sRunLine &= ' ' & $CmdLineRaw $sScript_Content &= '#NoTrayIcon' & @CRLF & _ 'While ProcessExists(' & @AutoItPID & ')' & @CRLF & _ ' Sleep(10)' & @CRLF & _ 'WEnd' & @CRLF & _ 'Run("' & $sRunLine & '")' & @CRLF & _ 'FileDelete(@ScriptFullPath)' & @CRLF $hFile = FileOpen($sAutoIt_File, 2) FileWrite($hFile, $sScript_Content) FileClose($hFile) Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sAutoIt_File & '"', @ScriptDir, @SW_HIDE) Sleep(1000) Exit EndFunc ;==>_ScriptRestart |